我在Ubuntu系統上有GNAT編程工作室(GPS)/ GNAT項目。該項目的Ada內容編譯得很好;但是,我需要綁定並鏈接到外部「.a」庫,其中包含由Ada軟件導入的(C++)例程編譯指示。每次嘗試時,我都會收到「圖書館項目不能主要指定」的消息。從GPS鏈接到Ubuntu .a模塊庫?
我不認爲我的項目是一個「圖書館項目」 - 我只是想鏈接到圖書館。爲什麼這很難?有沒有可能不重建世界?
警告:我不是Linux的黑客,所以請用例子來解釋清楚。謝謝:-)
我在Ubuntu系統上有GNAT編程工作室(GPS)/ GNAT項目。該項目的Ada內容編譯得很好;但是,我需要綁定並鏈接到外部「.a」庫,其中包含由Ada軟件導入的(C++)例程編譯指示。每次嘗試時,我都會收到「圖書館項目不能主要指定」的消息。從GPS鏈接到Ubuntu .a模塊庫?
我不認爲我的項目是一個「圖書館項目」 - 我只是想鏈接到圖書館。爲什麼這很難?有沒有可能不重建世界?
警告:我不是Linux的黑客,所以請用例子來解釋清楚。謝謝:-)
您可能會誤解「編輯項目屬性」對話框中的「庫」選項卡。當你的項目被建造成一個圖書館時,你就填補了這一點。所以把它抹掉。
然後在Switches選項卡/ Gnatmake選項卡的底部文本框中,將「-llib」引用添加到需要鏈接的庫中。例如:
-lmycpplib -lyourcpplib -lcppisnotforme
您可能需要告訴鏈接器非標準庫的位置;在'-L/where/to/find/it'的前面加上'-lmycpplib'。 –
謝謝你的例子,馬克。 LOL –
除了馬克·C'S建議,如果它是一個「神奇」庫(即-lz鏈接到zlib的,-lm鏈接到數學等),你應該將文件複製到GCC的外部LIB文件夾:
\lib\gcc\i686-pc-mingw32\4.5.3\
在我的windows GNAT目錄下,雖然linux應該有一些類似的結構。
很確定這是一個'internal'lib文件夾;更正常的地方可能是{GNAT top dir} \ lib。 –
不知道我理解這些評論,但這個庫是在本地創建的 - 不是任何發行版的一部分。 –
對,在你的開發機器上。 – Shark8
錯誤可能發生在您的.gpr項目文件中。你能發佈它的內容嗎? – flyx
可能無法發佈,但感謝您的線索。順便說一句,我注意到,由GPS設置的東西不會未設置,當它們通過GPS更改時,所以您可能是正確的。 –
@Eryndlia:通過GPS更新屬性後,一定要做一個「項目/全部保存」,讓他們進入gpr文件。 –