我正在使用其他人的makefile并在尝试编译exe的'静态'版本时遇到麻烦
我打印出了makefile的规则,错误是这样的:
g++ Main.or System.or Options.or -Wall -lz --static -o main
/usr/bin/ld: cannot find -lz
/usr/bin/ld: cannot find -lstdc++
/usr/bin/ld: cannot find -lm
/usr/bin/ld: cannot find -lc
collect2: error: ld returned 1 exit status
如果我在上面的命令中没有包含'--static'选项,它可以正常工作。
makefile还有生成静态lib的规则:
ar -rcsv lib_release.a Main.or System.or Options.or
r - Main.or
r - System.or
r - Options.or
Making Soft Link: lib_release.a -> lib.a
ln -sf lib_release.a lib.a
答案 0 :(得分:1)
-static
链接选项指示链接器忽略所有共享
可以解析libname.so
链接选项的libaries(-lname
)(两者都是显式的
并且默认)并且只接受静态库(libname.a
)。您已安装共享库
您的系统满足-lz
,-lstdc++
,-lm
和-lc
但不包含静态系统。
要使您的链接按原样工作,您必须安装静态库:
libz.a
(压缩库)libstdc++.a
(标准C ++库)libm.a
(数学图书馆)libc.a
标准C库通过适合您的发行版的方法。