最佳答案
有一台笔记本电脑,我没有根特权。
我用 configure --prefix=$HOME/.usr
在机器上安装了一个库。
之后,我在 ~/.usr/lib
里找到了这些文件:
libXX.so.16.0.0
libXX.so.16
libXX.so
libXX.la
libXX.a
当我用以下命令编译一个程序来调用库提供的函数之一时:
gcc XXX.c -o xxx.out -L$HOME/.usr/lib -lXX
Out 是在没有任何警告的情况下生成的,但是当我运行它时,出现了这样的错误:
./xxx.out: error while loading shared libraries: libXX.so.16: cannot open shared object file: No such file or directory
虽然 libXX.so.16
在那里。
我的无线索假设是在调用 xxx.out 时没有搜索 ~/.usr/lib
。
但是我能做什么来指定路径。所以,为了让 xxx.out 可以在那里找到。那么文件呢?
另外,当我将 -static
提供给 gcc 时,会发生另一个错误,如下所示:
undefined reference to `function_proviced_by_the_very_librar'
看起来 .so
并不重要,即使 -L
和 -l
给了 gcc。
我应该怎么做才能用这个库构建一个可用的 exe 呢?
我找到了 一篇有用的文章。
它介绍了静态/共享/动态加载库以及使用它们的一些示例代码。