我想創建一個共享對象(.so)使用gcc版本3.4.3的Solaris 32位系統。我在Google上搜索需要爲solaris創建共享對象的標誌。在一些帖子中,我看到「共享」標誌未被使用。而是使用「-G」標誌。我有一個印象,「-G」標誌與「-g」相同,但似乎「-G」相當於「共享」。我對麼?Solaris 32位 - 使用gcc生成共享對象
原因是,在使用SLES10 x86_64系統時,需要使用「-shared」標誌來構建.so。
我嘗試以下操作: -
LIB=-L/lib -L/usr/local/lib -L/usr/lib
gcc -m32 -G -fPIC -o myapi.so.1 myapi.o $(LIB)
我需要改變以上: -
gcc -m32 -shared -fPIC -o myapi.so.1 myapi.o $(LIB)
UPDATE1 有益的建議從 @ user562374使用-shared標誌。
如果使用-shared構建的共享對象部署在使用不同編譯器的solaris機器上,並且它是「靜態」鏈接的,是否會導致任何問題?當我說「靜態」鏈接.so時,我的意思是共享對象鏈接在make文件中,而不是使用「dlsym」。
這不是什麼「靜態」鏈接手段。靜態鏈接手段將您需要的.a庫的各個部分複製到您的二進制文件中,而不是使用共享對象。如果共享對象與dlopen一起工作,它應該與一個正常的動態庫鏈接一起工作(你錯誤地稱之爲「靜態」)。 – alanc 2011-02-09 04:57:38