ACE框架系列 linux下編譯方法

2021-09-26 23:47:15 字數 1896 閱讀 9942

4. 參考在linux環境下對ace進行編譯

4.1設定環境變數

vim ~/.bash_profile

export ld_library_path=/usr/local/lib:$ace_root/lib:$ld_library_path

然後執行source ~/.bash_profile

4.2建立檔案 $ace_root/ace/config.h,寫入如下內容

#ifndef _config_h_

#define _config_h_

#include "ace/config-linux.h"

#endif

4.3建立platform_macros.gnu

方法一:建立檔案 $ace_root/include/makeinclude/platform_macros.gnu 寫入

include $(ace_root)/include/makeinclude/platform_linux.gnu

方法二:利用軟連線建立(可以省略此步驟)

ln -s  $ace_root/include/makeinclude/platform_macros.gnu $ace_root/include/makeinclude/platform_linux.gnu

可以在platform_macros.gnu寫入install_prefix=/usr/local,將ace的include lib share安裝到/usr/local目錄下

4.4make

4.5切換到root,因為只有root才可以寫檔案到/usr/local,並設定環境變數

sudu -i

make install

切換到/usr/local,進入include lib share可以看到ace的相關檔案

4.6上面使用$ace_root/lib作為ace的庫檔案路徑,因為後面我們安裝到/usr/local/lib裡,可以把/usr/local/lib加入預設庫檔案查詢路徑

開啟/etc/ld.so.conf

本來內容是如下:

include ld.so.conf.d/*.conf

我們新增ace路徑後變成如下

include ld.so.conf.d/*.conf

/usr/local/lib

儲存退出!

然後執行 ldconfig就可以了

relocation r_x86_64_32 against `.rodata' can not be used when ****** a shared object

原因:

編譯.o檔案的時候,沒有加引數-fpic,(網友說這樣的問題在gcc version 3.4.6版本沒有發生,即該版本編譯器預設加上了-fpic,未驗證過),本人在出現問題時檢視了當前系統的gcc版本,為下面紅色標記部分。某些版本的gcc預設沒加-fpic引數。

當前程式中有用到某個靜態庫,那個靜態庫編譯.o檔案的時候沒有加上-fpic(靜態庫其實就是.o檔案打包)。補充一點:我發現手寫makefile時即使不加-fpic也沒有這個問題,這一點很鬱悶,這個只在用automake工具編譯出.a檔案時才出現過。

解決辦法:

保證你編譯.o檔案的時候,都加上-fpic,這樣你才能編譯出動態庫來。

ACE在Linux下編譯安裝

ace版本 ace 5.6 安裝過程 設定環境變數 看使用者使用的是那種shell環境,我比較喜歡用csh的所以在.cshrc檔案中新增ace root環境變數 bash的在.bashrc裡配置 export mpc root ace root mpc export ld library path ...

linux下編譯安裝ACE6

我用的系統是ubuntu12.04,選擇的ace版本是6.3.1。儲存在 home 使用者名稱 software資料夾下。3.配置環境變數。vi etc profile,然後增加如下內容 注意由於每個人的使用者名稱不同,這裡會稍有不同,例如我的路徑前面有 home jyx export ace ro...

AS 4下編譯安裝ACE

如果用bash vi bash profile 儲存,後 bash profile 編譯ace 1.選擇平台配置檔案,本系統應該選擇config linux.h,在 ace root ace 目錄下新建config.h檔案,在config.h中加入一行 include config linux.h ...