我使用了几个库,例如pthread
-lpthread
和math
-lmath
,但我不需要使用-L
选项来指定链接路径。
但是,
mylib
创建了一个库mylib.c
gcc -fPIC mylib.c -o libmylib.so
/usr/local/lib/libcustom
/usr/local/lib/libcustom
添加到文件中
/etc/ld.so.conf.d/libcustom.conf
ldconfig
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/customlib
sample.c
mylib
的函数
醇>
现在,当我编译sample.c
一个gcc -L /usr/local/lib/customlib -o sample.o -lmylib
时,它可以正常工作,就像我尝试gcc sample.c -o sample.o -lmylib
时一样,它会将ld错误视为/usr/bin/ld: cannot find -lmylib
我想知道为什么-L
在-lpthread
的情况下是-lmylib
,在-L
的情况下是强制性的?如果-lmylib
?
function has_specchar($x,$excludes=array()){
if (is_array($excludes)&&!empty($excludes)) {
foreach ($excludes as $exclude) {
$x=str_replace($exclude,'',$x);
}
}
if (preg_match('/[^a-z0-9 ]+/i',$x)) {
return true;
}
return false;
}
的使用?
感谢。
答案 0 :(得分:3)
您正在寻找LIBRARY_PATH
。
LD_LIBRARY_PATH
用于在运行时加载动态库,而非编译时。
附注:添加到现有环境变量时,请务必使用$LD_LIBRARY_PATH
而不是LD_LIBRARY_PATH
。否则,您将丢弃原始内容并输入文字LD_LIBRARY_PATH
。
所以应该改变:
export LD_LIBRARY_PATH=LD_LIBRARY_PATH:/usr/local/lib/customlib
为:
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/lib/customlib
答案 1 :(得分:1)
因此,您需要将mylib放置在链接器已知的路径中。例如/ usr / lib或/ usr / local / lib之类的地方。在您的情况下,它适用于pthread
,因为它已经位于系统已知路径中。