今天编译程序是把参数L和l的作用给忘记了。。。哎,今天一定要写下来,以后再忘记时可以参考(希望不要再忘记):
-llibrary
制定编译的时候使用的库
例子用法
gcc -lcurses hello.c
使用ncurses库编译程序
-Ldir
制定编译的时候,搜索库的路径。比如你自己的库,可以用它制定目录,不然
编译器将只在标准库的目录找。这个dir就是目录的名称。
-Idir
在你是用#include"file"的时候,gcc/g++会先在当前目录查找你所制定的头
文件,如果没有找到,他回到缺省的头文件目录找,如果使用-I制定了目录,他
回先在你所制定的目录查找,然后再按常规的顺序去找.
例子:
gcc -o test -L../lib -lapi.so.0 test.c
编译成功后,运行时又报error while loading shared libraries,首先运行ldd test,查看运行时缺了什么库
解决方法:
做软连接到 /lib : ln -s /home/xxx/lib/api.so.0 /lib/api.so.0
重新加载库: /sbin/ldconfig -v
程序可以正常运行。
*还有一种方法没有试过:
在/etc/ld.so.conf中加入/home/xxx/lib这一行,保存之后,再运行:/sbin/ldconfig –v更新一下配置即可。