• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Prayer

            在一般中尋求卓越
            posts - 1256, comments - 190, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            淺談LINUX與AIX的動態庫編譯過程

            Posted on 2018-11-28 14:35 Prayer 閱讀(559) 評論(0)  編輯 收藏 引用 所屬分類: LINUX/UNIX/AIXmakefile
            http://blog.sina.com.cn/s/blog_5e4b74040102x19u.html
            由于單位的項目需要,要把Linux和AIX環境下的靜態庫編譯為動態庫,現總結一下整個編譯的過程及重點注意事項。
            linux下的靜態庫文件編譯makefile如下:
            INCLUDE= \
            -I/libpath/hdf5-1.8.9/include/ -I/libpath/include -I/libpath/hdf5
            all: libname.a
            libname.a: zhdf.o
            ar -r libname.a zhdf.o
            zhdf.o: ../zhdf.cpp
            g++ $(INCLUDE) -Wall -g -c -lm ../zhdf.cpp -o zhdf.o
            .PHONY: clean
            clean:
            rm -rf *.o libname.a
            linux下的動態庫文件編譯makefile如下:
            INCLUDE= \
            -I/libpath/hdf5-1.8.9/include/ -I/libpath/include -I/libpath/hdf5
            all: libname.so
            libname.so: zhdf.o
            g++ -shared zhdf.o -o libname.so 
            zhdf.o: ../zhdf.cpp
            g++ $(INCLUDE) -Wall -g -c -fPIC -lm ../zhdf.cpp -o zhdf.o
            .PHONY: clean
            clean:
            rm -rf *.o libname.so
            區別主要是動態庫編譯時makefile需要-shared和-fPIC選項,另外,動態庫編譯成功后,需要進入使用該庫的用戶/home/user路徑下,vi .bashrc文件,用export指令將動態庫的路徑加入環境變量,如export LD_LIBRARY_PATH=yourlibpath,然后source .bashrc進行環境變量修改的保存,保存后可用env查看環境變量是否修改成功。以上,LINUX環境下動態庫的編譯就算完成啦!
            AIX下的靜態庫文件編譯makefile如下:
            INCLUDE= \
            -I/libpath/hdf5-1.8.9/include/ -I/libpath/include -I/libpath/hdf5/ \
            all: libname.a
            libname.a: zhdf.o
            ar -X64 -r libname.a zhdf.o
            zhdf.o: ../zhdf.cpp
            xlC $(INCLUDE) -q64 -qinfo -g -c -lm ../zhdf.cpp -o zhdf.o
            .PHONY: clean
            clean:
            rm -rf *.o libname.a
            AIX下的動態庫文件編譯makefile如下:
            INCLUDE= \
            -I/libpath/hdf5-1.8.9/include/ -I/libpath/include -I/libpath/hdf5/ \
            all: libname.so
            llibname.so: zhdf.o
            xlC $(INCLUDE) -q64 -bnoentry -qmkshrobj -blazy -G -o libname.so ../zhdf.cpp -lc
            zhdf.o: ../zhdf.cpp
            xlC $(INCLUDE) -q64 -c -lm ../zhdf.cpp -o zhdf.o
            .PHONY: clean
            clean:
            rm -rf *.o libname.so
            AIX環境下動態庫和靜態庫的編譯主要區別是動態庫使用-qmkshrobj進行動態庫的編譯,對應Linux環境下的-shared選項,動態庫編譯成功后,需要進入使用該庫的用戶/home/user路徑下,vi .profile文件,用export指令將動態庫的路徑加入環境變量,如export LIBPATH=yourlibpath,然后用. .profile完成對環境變量修改的保存,保存后可通過echo $LIBPATH查看是否添加成功。最后,由于AIX環境下動態庫的編譯機制問題,應用程序查找動態庫時,會去查找一個同名的.a文件。所以,很多人動態庫編譯成功,應用程序編譯時卻無法找到該動態庫。解決辦法是,在動態庫的路徑下,創建一個同名.a的連接,如ln -s libname.so libname.a。以上,AIX環境下動態庫的編譯也完成啦!
            亚洲中文字幕无码久久精品1| 日韩精品国产自在久久现线拍 | 99久久精品久久久久久清纯| 久久精品视频网| 一本久久免费视频| 精品亚洲综合久久中文字幕| 久久综合久久鬼色| 国产精品久久久久9999高清| 亚洲国产成人久久一区WWW| 久久久久久久人妻无码中文字幕爆 | 久久久青草久久久青草| 国产AⅤ精品一区二区三区久久| 伊人伊成久久人综合网777| 精品国产乱码久久久久久郑州公司 | 久久亚洲精品无码播放| 久久天堂AV综合合色蜜桃网| 久久se精品一区精品二区国产| 色综合久久中文字幕无码| 久久青青国产| 国产午夜福利精品久久| 囯产精品久久久久久久久蜜桃 | 久久精品99久久香蕉国产色戒| 久久免费视频6| 亚洲午夜久久久精品影院| 香蕉久久av一区二区三区| 亚州日韩精品专区久久久| 久久久青草久久久青草| 72种姿势欧美久久久久大黄蕉| 亚洲人成网亚洲欧洲无码久久 | 久久91精品国产91久久麻豆| 亚洲AV无码一区东京热久久| 日韩欧美亚洲综合久久| 少妇被又大又粗又爽毛片久久黑人| 久久免费精品一区二区| 色综合久久精品中文字幕首页| 99999久久久久久亚洲| 97久久精品人妻人人搡人人玩| 久久精品国产亚洲AV电影| 亚洲AV无码久久寂寞少妇| 欧美噜噜久久久XXX| A狠狠久久蜜臀婷色中文网|