做了点东西需要使用linux下ldap库,我装的linux上已经有ldap库,在程序中#include了。
用gcc编译时:gccfilename.c,会报找不到ldap.h文件以及ldap.h文件中相关函数的错误
但是使用gccfilename.c-lldap,就能够编译通过了。
后来要求使用powerpc-linux-uclibc-gcc来进行编译那个文件,
结果发生奇怪的事,使用powerpc-linux-uclibc-gccfilename.c-lldap编译,
竟然也找不到ldap.h文件以及ldap.h文件中相关函数的错误。
担心是powerpc-linux-uclibc-gcc不支持-l这个选项,
有随便写了一个包括pthread_create函数的程序,
用powerpc-linux-uclibc-gccfilename.c-lpthread编译竟然通过了。
为什么呢?小女子才疏学浅,希望各位高手予以指教,先谢过。
|
做了点东西需要使用linux下ldap库,我装的linux上已经有ldap库,在程序中#include了。
用gcc编译时:gccfilename.c,会报找不到ldap.h文件以及ldap.h文件中相关函数的错误
但是使用gccfilename.c-lldap,就能够编译通过了
这是因为虽然你包含了头文件但是,你并没有连接库文件,所以编译的时候要-lldap
后来要求使用powerpc-linux-uclibc-gcc来进行编译那个文件,
结果发生奇怪的事,使用powerpc-linux-uclibc-gccfilename.c-lldap编译,
竟然也找不到ldap.h文件以及ldap.h文件中相关函数的错误。
这应该是因为,powerpc-linux-uclibc-gcc的库中不包含ldap.h以及其中定义的相关函数
至于:
用powerpc-linux-uclibc-gccfilename.c-lpthread编译竟然通过了。
这是因为,你连接了POSIX的多线程库pthread,在你的powerpc-linux-uclibc-gcc中有包含该库。
|
哦我知道了
我想问下你为什么不用gnu的那套工具链
我给你看看这个东西吧这是我的一个动态库的例子和你的差不多只不过是用gnu工具链生成的
libscholar_la_CPPFLAGS=$(AM_CPPFLAGS)-I../../postagger/src-I/usr/include/libxml2-I/usr/local/include/maxent-I/usr/include(-I就是头文件路径)
libscholar_la_LDFLAGS=$(AM_LDFLAGS)-L/usr/local/lib-L/usr/local/include(-L动态库路径)
libscholar_la_LIBADD=-lpthread-liconv-lxml2-lmaxent-lz-lg2c-lpostagger-limconfman(-l动态库名字)
这和你的手写编译命令的那种方式一样的,你可能缺了-L(动态库路径),一般来说这些路径是不用自己去找的,可以用命令(前提是有pkg-config软件)pkg-config--cflagsglib-2.0(库名字)和pkg-config--libsglib-2.0获得,自己找会找死人,鬼知道它装在哪