【发布时间】:2013-12-13 11:38:00
【问题描述】:
我有一个从 Windows 移植到 Linux 的 c++ 应用程序,一切正常,但是... 我们的客户在 Debian 3.1 (sarge) 上运行的应用程序是什么,我无法在目标系统上强制使用 gcc 版本,我更喜欢使用新的 gcc(有一些 c++11 结构,我想保留)。我想暂时为测试和 .so 文件制作可执行文件。
我决定静态编译我的过程。
当我跑步时:
g++ -static -o prog obj/sublib1/file1.o obj/sublib1/file2.o obj/sublib2/file1.o obj/sublib2/file2.o (...) -L../somedir -s -lsomestaticlib
我得到一个错误:
/usr/lib/gcc/i586-suse-linux/4.8/../../../../i586-suse-linux/bin/ld: cannot find -lm
/usr/lib/gcc/i586-suse-linux/4.8/../../../../i586-suse-linux/bin/ld: cannot find -lc
系统是OpenSuse 13.1 32bit,uname -a:
Linux linux-zfaz.site 3.11.6-4-desktop #1 SMP PREEMPT Wed Oct 30 18:04:56 UTC 2013 (e6d4a27) i686 i686 i386 GNU/Linux
问题可能出在数学库和 C 库上。两个库的动态版本都在 /lib 目录中。
(可能没关系:我试图使用 code::blocks 构建它,但是当问题发生时我已经转移到终端)
我需要安装这些库的静态版本吗?怎么样?
【问题讨论】:
标签: c++ linux gcc g++ static-linking