2011-11-24 39 views
0

我正在用C++編寫一個小應用程序,我對此有一些疑問。我基本上是一個Java開發人員,現在正在轉向C++。如何在Linux中使用C++編寫庫

  1. 如果我使用像升壓一些圖書館,捲曲等我可以使它無需安裝客戶端機器上運行(我的意思是這樣,包括在Java項目中的所有庫jar文件)

  2. 我已經在linux中安裝了一些庫或軟件。之後,如果我輸入終端,它會對軟件進行排序。例如,PHP,安裝它後,你可以從終端使用PHP。這個怎麼用?我可以使用我的簡單C++項目來做到這一點嗎?

回答

3
  1. 是的。您使用一個名爲的進程,它將所有庫鏈接成一個大的可執行文件,並將其鏈接到。在./configure腳本(來自autotools)中,您使用--enable-static標誌。在構建程序時,使用-static標誌。靜態庫是後綴爲.a的庫;共享庫使用.so,有時使用版本號後綴)。

  2. PHP不是一個庫,它是一種語言(即可執行文件),它提供了自己的命令行界面。您的C++可執行文件可以類似工作,您只需從cin(在<iostream>中)獲取輸入並將結果寫入cout,並使用cerr獲取錯誤消息。

你的標題問題,「如何使在C++庫在Linux」(而不是使用庫):您可以使用ar程序來幾個.o文件鏈接到一個單一的.a庫文件。您也可以使用ranlib來清理.a文件。請閱讀man頁面以瞭解這些命令的用法。

1

對於問題1,您希望將程序編譯爲靜態可執行文件。 (只需將-static傳給g ++)。它會使程序大得多,因爲它需要包含通常保存爲庫的東西的副本。

對於問題2我很確定你的意思是在PATH中有一個程序。鍵入echo $PATH以查看當前計算機上的路徑。如果您將程序安裝在其中一個目錄中,它將從任何地方運行。 (最有可能的是/usr/local/bin/

2

1)對你的Q1的回答是靜態鏈接庫的編譯。例如用gcc編譯器:

#gcc的-static myfile.c文件-o MYFILE

2)答案給你Q2被追加到$ PATH環境變量的可執行文件的絕對路徑。例如,在Bash shell中:

#出口PATH = $ {PATH}:/ home/user中/ pathofexecutable

上述設置只爲你做終端是暫時的。爲了讓你的機器上的所有終端都可以使用,可以將上面的導出命令添加到/home/user /。bashrc文件。

相關問題