我不得不符号链接到目标库:gcc -llibname和OS如何找到lib路径?
~/opt/OpenBLAS/lib $ ls -al
total 0
drwxrwxr-x 2 user user 59 Jul 9 13:03 .
drwxrwxr-x 5 user user 147 Jul 9 12:48 ..
lrwxrwxrwx 1 user user 64 Jul 9 13:03 libopenblas.a -> ../openBLAS_v0.2.9df/lib/libopenblas_df029_sandybridgep-r0.2.9.a
lrwxrwxrwx 1 user user 65 Jul 9 13:03 libopenblas.so -> ../openBLAS_v0.2.9df/lib/libopenblas_df029_sandybridgep-r0.2.9.so
$回声$ LD_LIBRARY_PATH
/home/user/opt/OpenBLAS/lib
然后GCC有以下ARGS:
-L/home/user/opt/OpenBLAS/lib -lopenblas
然而
,编译后运行命令总是抛出错误:
error while loading shared libraries: libopenblas_df029.so.0: cannot open shared object file: No such file or directory
如果我在/home/user/opt/OpenBLAS/lib
下创建了一个符号链接libopenblas_df029.so.0
,它将会起作用。
任何人都可以向我解释为什么会发生这种情况,我该如何改变行为? 这是否意味着libopenblas包含一些后缀,并且操作系统在尝试查找lib文件时总是附加这个后缀?