在應用程序移植的過程中,有時會遇到第三方的動態庫所依賴的符號在操作系統的 glibc 里不再支持的情況,
對于這種情況可以用鏈接器的選項 '-Bstatic' 指定鏈接時鏈接庫的靜態版本。
對于下面這個例子:
執行make的時候,顯示如下
cc -o FOOPro foosql.o foodblib.o fooodbc.o foofun.o main.o ../unixos/version.o
-L/home/foo/lib -lfunc -lalarm -L/home/sybase/OCS-12_5/lib -lsybdb -lm
/home/sybase/OCS-12_5/lib/libsybdb.so: undefined reference to `dladdr'
collect2: ld returned 1 exit status
可以用如下命令指定鏈接靜態庫 libsybdb.a
cc -o FOOPro foosql.o foodblib.o fooodbc.o foofun.o main.o ../unixos/version.o
-L/home/foo/lib -lfunc -lalarm -L/home/sybase/OCS-12_5/lib -Wl,-Bstatic -lsybdb -Wl,-Bdynamic -lm