编译libconfig ++与-static-libgcc和-static-libstdc ++ [英] compile libconfig++ with -static-libgcc and -static-libstdc++

查看:1736
本文介绍了编译libconfig ++与-static-libgcc和-static-libstdc ++的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图使用

$ b $编译 libconfig ++ 版本1.4.8 b

  make LDFLAGS =' -  static-libstdc ++ -static-libgcc'

但这似乎不起作用,因为我还得到:

  $ readelf -d lib / .libs / libconfig ++。so | grep需要
0x0000000000000001(NEEDED)共享库:[libstdc ++。so.6]
0x0000000000000001(NEEDED)共享库:[libm.so.6]
0x0000000000000001(NEEDED)共享库: libc.so.6]
0x0000000000000001(NEEDED)共享库:[libgcc_s.so.1]

我注意到so文件的第二个到最后的编译步骤包含我的LDFLAGS:

  / bin / bash ../libtool --tag = CXX --mode = link g ++ -g -O2 -Wall -Wshadow -Wextra -Wno-unused-parameter -version-info 10:3:1 -no-undefined -static-libgc 
c -o libconfig ++。la -rpath / usr / local / lib libconfig ___ la-libconfig.lo libconfig ___ la-scanner.lo libconfig ___ la-grammar.lo libconfig ___ la-scanctx.lo li
bconfig ___ la-strbuf.lo libconfig ___ la-libconfigcpp .lo

看起来像最后一个不会:

  libtool:link:g ++ -fPIC -DPIC -shared -nostdlib /usr/lib/gcc/x86_64-linux-gnu/4.7/../ .. /../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.7 
/crtbeginS.o .libs / libconfig ___ la-libconfig.o .libs / libconfig ___ la-scanner。 o .libs / libconfig ___ la-grammar.o .libs / libconfig ___ la-scanctx.o .libs / libc
onfig ___ la-strbuf.o .libs / libconfig ___ la-libconfigcpp.o -L / usr / lib / gcc / x86_64-linux -gnu / 4.7-L / usr / lib / gcc / x86_64-linux-gnu / 4.7 /../../../ x86_64-linu
x-gnu -L / usr / lib / gcc / x86_64 -linux-gnu / 4.7 /../../../../ lib -L ​​/ lib / x86_64-linux-gnu -L / lib /../ lib -L ​​/ usr / lib / x86_64-linux- gnu -L / usr / lib /../ lib -L ​​/ usr / l
ib / gcc / x86_64-linux-gnu / 4.7 /../../ .. -lstdc ++ -lm -lc -lgcc_s /usr/lib/gcc/x86_64-linux-gnu/4.7/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../x
86_64-linux -gnu / crtn.o -O2 -Wl,-soname -Wl,libconfig ++。so.9 -o .libs / libconfig ++ so.9.1.3

这可能是它的原因,在这种情况下,我将如何解决/解决它?

解决方案

看起来像libconfig ++ Makefile只是忽略LDFLAGS,因为我看不到'-static-libstdc ++'被拾起。



试试这个:

  CXX =g ++ -staticmake 



或者只是将LDFLAGS 放在之前,而不是之后。


I'm trying to compile libconfig++ version 1.4.8 with

make LDFLAGS='-static-libstdc++ -static-libgcc'

but this doesn't seem to work since I'm still getting:

$ readelf -d lib/.libs/libconfig++.so | grep NEEDED
 0x0000000000000001 (NEEDED)             Shared library: [libstdc++.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libgcc_s.so.1]

I'm noticing that the second-to-last compile step for the so file contains my LDFLAGS:

/bin/bash ../libtool --tag=CXX   --mode=link g++  -g -O2 -Wall -Wshadow -Wextra -Wno-unused-parameter -version-info 10:3:1 -no-undefined -static-libgc
c -o libconfig++.la -rpath /usr/local/lib libconfig___la-libconfig.lo libconfig___la-scanner.lo libconfig___la-grammar.lo libconfig___la-scanctx.lo li
bconfig___la-strbuf.lo libconfig___la-libconfigcpp.lo

Whereas it appears like the very last one doesn't:

libtool: link: g++  -fPIC -DPIC -shared -nostdlib /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.7
/crtbeginS.o  .libs/libconfig___la-libconfig.o .libs/libconfig___la-scanner.o .libs/libconfig___la-grammar.o .libs/libconfig___la-scanctx.o .libs/libc
onfig___la-strbuf.o .libs/libconfig___la-libconfigcpp.o   -L/usr/lib/gcc/x86_64-linux-gnu/4.7 -L/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../x86_64-linu
x-gnu -L/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/l
ib/gcc/x86_64-linux-gnu/4.7/../../.. -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/x86_64-linux-gnu/4.7/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../x
86_64-linux-gnu/crtn.o  -O2   -Wl,-soname -Wl,libconfig++.so.9 -o .libs/libconfig++.so.9.1.3

Could this be the cause of it, and in that case, how would I go about fixing/working around it?

解决方案

It seems like the libconfig++ Makefile is simply ignoring LDFLAGS, since I don't see '-static-libstdc++' being picked up at all.

Try this:

CXX="g++ -static" make

Or just put the LDFLAGS before make, instead of after it.

这篇关于编译libconfig ++与-static-libgcc和-static-libstdc ++的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆