环境:Ubuntu 14.04。 gcc 4.8.2
我正在研究C ++控制台应用程序。当我跑" ldd"在可执行文件上,我看到以下内容:
linux-vdso.so.1 => (0x00007fffe495e000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f9ffa754000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9ffa38e000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f9ffa087000)
/lib64/ld-linux-x86-64.so.2 (0x00007f9ffaa6e000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f9ff9e71000
我想知道是否可以在gcc / linker上定义标志,以便最终的可执行文件不依赖于任何共享库。
答案 0 :(得分:3)
在链接时添加-static
: - )
不仅出于安全原因,应避免静态链接。
BTW:据我所知,无法从动态库中创建静态库。因此,如果您只有共享库,则无法链接静态。