我正常编译我的程序。
mkdir mystatic
cd mystatic
make
g++ `./wx-config --static=yes --libs` `./wx-config --static=yes --cxxflags` etc
但是当我输入
时ldd application I get many library. linux-gate.so.1 => (0xb76e7000) libgtk-x11-2.0.so.0 => /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0 (0xb724b000) libgdk-x11-2.0.so.0 => /usr/lib/i386-linux-gnu/libgdk-x11-2.0.so.0 (0xb719d000) libpangocairo-1.0.so.0 => /usr/lib/i386-linux-gnu/libpangocairo-1.0.so.0 (0xb718f000) libgdk_pixbuf-2.0.so.0 => /usr/lib/i386-linux-gnu/libgdk_pixbuf-2.0.so.0 ....
如何静态编译我的应用程序。我的应用程序将在任何Linux发行版上运行。
答案 0 :(得分:2)
首先我从源(http://wxwidgets.org/downloads/)重新安装了wxWdgets(就像这里http://ubuntuforums.org/showthread.php?t=937810):
./ configure --enable-optimize --enable-stl --enable-unicode --enable-threads --enable-static --disable-shared --enable-monolithic --enable-graphics_ctx --with- X11
make
make install
update-alternatives --config wx-config
updatedb
locate wx_ | sed '/doc/d;/\/usr\/l/d'
制作wxWidgets-2.8.12 / samples / minimal
我已经修改了' Makefile' LIBS字符串:
LIBS = -lz -ldl -lm -lX11 -lcairo
比命令make
我有可执行文件" minimal" 3164131字节
答案 1 :(得分:1)
你真的不应该静态地链接libc
,在许多情况下你也会在静态链接GTK +库时遇到麻烦(注意这也有许可意义)。相反,在你想要支持的最古老的系统(通常是一些古老的CentOS版本)上构建程序,这在实践中工作得相当好,因为所有其他系统将具有与程序链接的库的后期但兼容的版本。 / p>