2012-10-12 144 views
1

我有兩個用C++編寫的項目。假設項目被命名爲第一個和第二個,第一個是基礎項目,第二個項目第一個是插件,所以當我構建並安裝第二個項目時,它只是增加了第一個項目的功能。Eclipse與多個項目一起工作

我創建了兩個獨立的Makefile項目'第一'和'第二',我能夠分別構建它們兩個。

我的問題是,我無法鏈接「第一」中生成的二進制文件作爲「第二」的基本二進制文件。我試圖在stackoverflow上搜索類似的問題,但我沒有得到任何想法如何將'第一'中生成的二進制文件鏈接到'第二',任何幫助將不勝感激。

讓我知道是否需要重新構建我的問題。

回答

1

如果你正在使用gcc,並讀取reference for linker options,你會發現,以選擇與外部庫鏈接:

  • -L<directory>

    此選項告知鏈接添加<directory>到庫搜索路徑。換句話說,它告訴鏈接器在哪裏找到庫文件。

  • -l<name-of-lib>

    這個選項告訴鏈接器庫鏈接。 POSIX環境中的庫(使用Cygwin或MinGW的Linux,OSX和Windows)命名爲libname-of-lib.a,但使用-l選項時,不需要使用lib前綴或.a擴展名。還請注意,在選項-l中,這是小寫字母L(不是大寫i或數字1)。

總結:要與另一個目錄庫鏈接,你鏈接是這樣的:

$ gcc <other flags> <object files> -o <executable> -L<directory> -l<library> 

在你的情況,你應該爲-L選項指定的目錄下的project1的庫,和對於-l選項,您傳遞庫的基本名稱。


如果在另一方面,你不把project1到庫中,並希望直接與它的對象要鏈接的文件,那也太細:當然

$ gcc <flags> <object files of project1> <object files of project2> -o <executable> 

目標文件可完整或相對路徑。例如,如果你有以下目錄結構:

 
/
`-- home 
    `-- user 
     `-- myproject 
      |-- project1 
      `-- project2 

那麼如果您是在project2目錄,你可以從project1訪問目標文件,如

../project1/objectfile.o 

所有這一切都可以的當然可以放在一個Makefile中。

+0

謝謝Joachim,這確實有用:) – hld619

相關問題