2011-10-12 79 views
1

使用gcc構建共享librrary之後,共享庫生成良好,但是當我發出「ldd」時,它給了我對「libstdC++。so.5」的依賴關係沒有辦法告訴編譯器GCC igonre所以文件相關gcc選項忽略libstdC++。so.5依賴項

# ldd libtest.so 
      libstdc++.so.5 =>  /opt/gcc/libstdc++.so.5 
      libsocket.so.1 =>  /lib/libsocket.so.1 
      libnsl.so.1 => /lib/libnsl.so.1 
      libc.so.1 =>  /lib/libc.so.1 
      libmp.so.2 => /lib/libmp.so.2 
      libmd.so.1 => /lib/libmd.so.1 
      libscf.so.1 => /lib/libscf.so.1 
      libdoor.so.1 => /lib/libdoor.so.1 
      libuutil.so.1 =>   /lib/libuutil.so.1 
      libgen.so.1 => /lib/libgen.so.1 
      libm.so.2 =>  /lib/libm.so.2 
      /platform/SUNW,SPARC-Enterprise-T5220/lib/libc_psr.so.1 
      /platform/SUNW,SPARC-Enterprise-T5220/lib/libmd_psr.so.1 

什麼編譯optiion我應該給這會忽略像「的libstdC++。so.5的」的依賴條件?

+0

它被標記爲Linux,但它看起來像你在Solaris上,不是嗎? –

回答

2

建築librrary使用gcc共享後,共享庫建立,但是當我發出「LDD」它給我依賴上「的libstdC++。so.5的」

GCC不自動鏈接libstdC++,g ++。所以,無論是用g ++鏈接還是通過-lstdc++鏈接器選項。

您有幾種選擇:

  • 構建和鏈接與gcc,不g++,以確保的libstdC++不會被自動鏈接。不要通過-lstdc++鏈接器選項。顯然,這隻適用於C的代碼。
  • 通過使用-static-libstdc++鏈接階段選項,建立並鏈接到g++並靜態鏈接libstdC++。
+0

#g ++ -lstdC++ -o first3 first.cpp [root @ aninath -lnx sharedlibraray]#ldd first3 libstdC++。so.6 => /usr/lib64/libstdc++.so.6(0x0000003c64600000) libm.so.6 => /lib64/libm.so.6(0x0000003c5e200000) libgcc_s.so.1 => /lib64/libgcc_s.so.1(0x0000003c64200000) libc.so.6 => /lib64/libc.so.6(0x0000003c5de00000 ) /lib64/ld-linux-x86-64.so.2(0x0000003c5ce00000) – anish

+0

]#g ++ -static-libstdC++ -o first3 first.cpp g ++:無法識別的選項'-static-libstdC++' – anish

+0

老兄,你沒有'像我說的那樣。再次閱讀。 –