gpt4 book ai didi

linux - 当我尝试链接测试文件时出现文件错误

转载 作者:太空宇宙 更新时间:2023-11-04 04:06:51 25 4
gpt4 key购买 nike

我写了一个简单的make文件

test : main.cpp
g++ -Wall -o $@ $^ -lhello_ext -L. -I/usr/include/python2.7/ -lboost_regex -lpython2.7 -ggdb
libhello_ext.so : hello_ext.o
g++ -shared -o $@ $^ -Lboost-lib-path -I/usr/include/python2.7/ -lboost_regex -lpython2.7 -ggdb
hello_ext.o : hello_ext.cpp
g++ -c -Wall -Werror -fpic -o $@ $^ -I/usr/include/python2.7/ -lboost_regex -lpython2.7 -ggdb
.PHONY : clean
clean:
rm -rf test lib* *.o *.swf

但是当我执行 make 时出现错误

/usr/bin/ld: cannot find -lhello_ext
collect2: error: ld returned 1 exit status
make: *** [test] Error 1

问题出现在前两行,当我从 make 文件中删除这些命令并将手动方式写入终端时,它工作正常。也就是说,从终端我做

g++ -Wall -o $@ $^ -lhello_ext -L. -I/usr/include/python2.7/   -lboost_regex -lpython2.7 -ggdb

一切正常。有什么问题吗?

最佳答案

当您直接执行该行时,$@ $^ 可能为空(使用 echo 自行检查)。在这种情况下,参数 -lhello_ext 不会解释为要添加的库的链接器命令,而是解释为目标文件的输出名称。这就是它在命令行上工作的原因。

至于为什么它在 Makefile 中不起作用:我的猜测是您的库 hello_ext 位于当前目录中。为了让链接器找到它,您需要在添加库之前添加库路径信息 -L.

关于linux - 当我尝试链接测试文件时出现文件错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20781999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com