다른 응용 프로그램에 LD_PRELOAD
이있는 공유 객체 (.so)를 컴파일 중입니다. libstdC++와 libgcc를 정적으로 연결하고있다. -static-libgcc -static-libstdc++
을 사용하면 shard 객체 충돌을 피할 수있다. 이렇게하면 libstdC++의 모든 내용이 공개 기호로 공개됩니다. 내가 Linux g ++ : 내 보내지 않고 정적 libstdC++에 연결
nm -D mylib.so
을 수행 할 때이이 때문에 C++ 응용 프로그램에 LD_PRELOADed 될 때부터 내가
00000000000714e0 W _ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv
0000000000071530 W _ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv
00000000000714d0 W _ZNKSt15basic_streambufIcSt11char_traitsIcEE5ebackEv
00000000000714f0 W _ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv
0000000000071540 W _ZNKSt15basic_streambufIcSt11char_traitsIcEE5epptrEv
0000000000071520 W _ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv
00000000000712a0 W _ZNKSt15basic_streambufIcSt11char_traitsIcEE6getlocEv
이것은 나쁜 같은 물건을 많이 얻을,이 기호는 원인이되는 응용 프로그램 기호를 무시하려고 예기치 않은 행동.
그렇다면 이러한 기호를 모두 공개하지 않고 libstdC++에 정적으로 gcc 링크를 만들려면 어떻게해야합니까?