【发布时间】:2022-01-25 01:22:56
【问题描述】:
我正在尝试使用 make 文件运行我的库。我目前有一个名为 libname.so 的动态库,我通过链接我的一些 C 文件的目标文件来创建它。当我在我的 linux shell 中运行以下代码行时,这个库可以正常工作:
gcc -L. main1.c -lname -o out
LD_LIBRARY_PATH=.
export LD_LIBRARY_PATH
但是,当我将这些确切的代码行复制到 make 文件中并将此函数的 make 文件标题命名为“names”,然后在 linux shell 中运行“make names”时,我收到以下错误:
./out: error while loading shared libraries: libname.so: cannot open shared object file: No such file or directory
然后当我再次运行 makefile 函数末尾显示的最后两行代码然后运行 out 文件时,它被修复并且程序再次运行。
我只需要弄清楚如何直接从 makefile 中使其工作。
【问题讨论】:
-
如果我理解正确,您的 makefile 会正确构建
out,但是当您尝试运行out时会出现运行时错误,因为...工作目录不在 @987654325 中@?如果这是问题所在,那么您无法从 makefile 中修复它。进程不允许修改调用它的进程的环境变量,因此 Make 无法在您运行 Make 的 shell 中修改LD_LIBRARY_PATH。 -
是的,您理解正确。在构建库文件期间我可以做些什么或任何可以解决我的问题的事情?
-
-L.您的库libname.so是否与源文件位于同一文件夹中?如果没有,您可能需要将库路径从.更改为实际路径。