看一下gcc编译时常用到的两个参数-l(小写L)和-L
当需要编译的程序中用到了外链库(非标准库)时,我们在编译时就需要用到-l参数,后面紧跟库名
如果程序用到了多线程库,编译时就得加上-lphread
gcc test.c -lpthread
默认情况下,库的搜索路径是(我的是ubuntu) "/usr/lib"和"/usr/local/lib",如果你链接的库不在这两个路径下,你可以选择把它copy进去,当然你也可以选择-L参数。可以这样写:
gcc test.c -L/home/test/lib -la
指明a在/home/test/lib下
有一种情况是编译通过了但是运行时找不到so,还是因为运行时的查找路径里没有你编译链接时的那个so,此时可以通过-Wl,rpath参数指定:
gcc test.c -L/home/test/lib -la -Wl,-rpath='$$ORIGIN/../lib'
'$$ORIGIN'表示当前路径