日期:2014-05-16  浏览次数:20965 次

虚拟机的ubuntu编译带有x11\xlib.h的c程序
C程序中有incledu<X11/Xlib.h>和include<X11/Intrinsic.h>,我用gcc -c main.c -o main.o ;终端出现错误:
/usr/include/X11/Intrinsic.h:1244: note: expected ‘XtCallbackProc’ but argument is of type ‘void (*)(struct _WidgetRec *)’;
/usr/include/X11/Xlib.h:2424: note: expected ‘const struct XChar2b *’ but argument is of type ‘char *’
但是在windows却能编译通过?到底是windows下的X11与LINUX下的不同,X11是个什么东西?有什么作用,是不是有多种类型了?还是编译器的问题了?如果是,该怎么解决了。说一下,代码是c写的,里面调用了fortran写的东西

------解决方案--------------------
弱弱问下Windows下如何编译?
------解决方案--------------------
linux和windows有些不同。首先要安装dev开发包。至于Intrinsic.h在哪个包里面,请你自己google一下吧。
ubuntu里面安装开发包的命令大概如下。dev包有很多,请根据需要选择安装。
sudo apt-get install build-essential gcc libimlib2-dev libxmu-dev 

然后编译时,需要加上一些选项。比如写成这样的样子(只是示例):
gcc -o ./icon-desk ./icon-desk.c -lXinerama -lXft -lX11 -lImlib2 -lXmu `pkg-config --cflags --libs glib-2.0` `giblib-config --cflags --libs` -lcurl -lpng -lXcomposite -lXdamage -lXfixes -lXrender -lm 

这是一个我自己开发的简单的“Linux Desktop Environment (DE)”,即linux的桌面环境。里面有源码,你可以参照一下。在源码目录里面,有编译的命令(一个叫“make”的脚本文件)
细节请看:
http://forum.ubuntu.org.cn/viewtopic.php?f=1&t=372366
或者看sourceforge.net的wiki。
https://sourceforge.net/p/icon-de/wiki/Home/
或者看sourceforge.net项目主页:
https://sourceforge.net/projects/icon-de/