【发布时间】:2017-02-11 04:05:48
【问题描述】:
我完全没有使用 gcc 构建的经验,现在需要一些帮助。 我正在使用以下选项构建代码
gcc \
-g myCode.C \
-O \
-o myCode \
-I. \
-L. \
-L/usr/lib64 \
-lstdc++ \
-Wreturn-type \
-Wswitch \
-Wcomment \
-Wformat \
-Wchar-subscripts \
-Wparentheses \
-Wpointer-arith \
-Wcast-qual \
-Woverloaded-virtual \
-Wno-write-strings /usr/lib64/libm.so \
-Wno-deprecated
在 redhat 6 机器上编译 myCode.C 时,它不适用于旧版本的操作系统抛出错误
/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found
/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found
为了解决这个问题,我尝试添加 -static 构建选项以使所有动态链接库都为静态,但有一些我不明白的构建错误:(
/usr/bin/ld: attempted static link of dynamic object `/usr/lib64/libm.so'
collect2: ld returned 1 exit status
如何让我的代码在旧版本的 redhat 上运行,而不仅仅是在 6 和更新版本上运行?我应该添加/删除哪些构建选项?
【问题讨论】:
-
从
-Wno-write-strings /usr/lib64/libm.so中删除/usr/lib64/libm.so并在必要时添加-lm。 -
@ymonad
/usr/bin/ld: cannot find -lm