GCC通过-L 和-l 可以定义所使用的库,但是在实际应用中不同平台中库命名不一样,比如名字为XXX的库,在linux下叫libXXX.a,在window下可能就叫XXX.dll.对于初学者可能这个库了,可能就是找不到.命令ld可以告诉你gcc会搜索那些名字.通过命令
ld -l pump --verbose
在执行之后再最下会发现
attempt to open /usr/i486-linux-gnu/lib32/libpump.so failed
attempt to open /usr/i486-linux-gnu/lib32/libpump.a failed
attempt to open /usr/local/lib32/libpump.so failed
attempt to open /usr/local/lib32/libpump.a failed
attempt to open /lib32/libpump.so failed
attempt to open /lib32/libpump.a failed
attempt to open /usr/lib32/libpump.so failed
attempt to open /usr/lib32/libpump.a failed
attempt to open /usr/i486-linux-gnu/lib/libpump.so failed
attempt to open /usr/i486-linux-gnu/lib/libpump.a failed
attempt to open /usr/local/lib/libpump.so failed
attempt to open /usr/local/lib/libpump.a failed
attempt to open /lib/libpump.so failed
attempt to open /lib/libpump.a failed
attempt to open /usr/lib/libpump.so failed
attempt to open /usr/lib/libpump.a failed
ld: cannot find -lpump
从中可以看到GCC搜索那些类库.通过-L可以设置优先搜索的路径
$ ld -L /home/javen/pump -l pump --verbose
attempt to open /home/javen/pump/libpump.so failed
attempt to open /home/javen/pump/libpump.a failed
attempt to open /usr/i486-linux-gnu/lib32/libpump.so failed
attempt to open /usr/i486-linux-gnu/lib32/libpump.a failed
attempt to open /usr/local/lib32/libpump.so failed
attempt to open /usr/local/lib32/libpump.a failed
attempt to open /lib32/libpump.so failed
attempt to open /lib32/libpump.a failed
attempt to open /usr/lib32/libpump.so failed
attempt to open /usr/lib32/libpump.a failed
attempt to open /usr/i486-linux-gnu/lib/libpump.so failed
attempt to open /usr/i486-linux-gnu/lib/libpump.a failed
attempt to open /usr/local/lib/libpump.so failed
attempt to open /usr/local/lib/libpump.a failed
attempt to open /lib/libpump.so failed
attempt to open /lib/libpump.a failed
attempt to open /usr/lib/libpump.so failed
attempt to open /usr/lib/libpump.a failed
ld: cannot find -lpump
当然了第一个被搜索道德库会被利用,当在搜索路径中放入库是则会
attempt to open /home/javen/pump/libpump.so failed
attempt to open /home/javen/pump/libpump.a succeeded