1
我正在嘗試使用gprbuild構建靜態庫。圖書館沒有一個main(用C語言編寫並在後期鏈接),並且必須是自包含的,據我所知gpr術語是「獨立的」,這意味着它不需要鏈接包括運行期間的運行時間。使用gprbuild構建靜態獨立庫
我GPR看起來像這樣
project Ada_Foo_Lib is
for Source_Dirs use ("src");
for Object_Dir use "obj";
for Library_Dir use "lib";
for Library_Name use "ada_foo_lib";
for Library_Kind use "static";
package Binder is
for Default_Switches("Ada") use ("-n");
for Required_Switches ("Ada") use ("-n");
end Binder;
end Ada_Foo_Lib;
當我運行gprbuild,我在日誌中看到,不包括粘合劑的電話:
gnatmake -Pada_foo_lib.gpr --create-missing-dirs
gcc-4.9 -c -I- -gnatA /home/temp/src/ada_foo_pack.adb
building static library for project ada_foo_lib
ar cr /home/temp/lib/libada_foo_lib.a /home/temp/obj/ada_foo_pack.o
ranlib /home/temp/lib/libada_foo_lib.a
我的問題是造成libada_foo_lib.a
沒有輸出adainit
和adafinal
。我試圖鏈接它,並用objdump
進行驗證。
我試過各種開關的組合,但沒有做粘結劑被調用,除非我改變爲Library_Kind
到dynamic
,並使用Library_Standalone
:
是否有可能添加一個存根「main」來強制adainit和adafinal被鏈接,但從來沒有調用它? –