歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> 學習Linux >> 交叉編譯總結 libosscore.a libcurl.a libmysqlclient.a,libcurl交叉編譯

交叉編譯總結 libosscore.a libcurl.a libmysqlclient.a,libcurl交叉編譯

日期:2017/3/6 9:31:31   编辑:學習Linux

交叉編譯總結 libosscore.a libcurl.a libmysqlclient.a,libcurl交叉編譯


交叉編譯總結 libosscore.a libcurl.a libmysqlclient.a,libcurl交叉編譯


把工程文件交叉編譯到arm上運行,著實花費了一番功夫。 首先遇到的錯誤是 X uses VFP register arguments, B does not 百度了一下,發現是硬浮點和軟浮點的問題,原先是思路是改變X的編碼方式,遷就於Y,後來怎麼弄都不行,改變思路,用armv7-linux的編譯器重新編幾個庫。 1.libosscore.a 下載OSS-master.zip 這個庫是用cmake編譯的, mkdir build 保證cmake出來的文件和原來的文件區分開 cd build export PATH=/home/slk/STM/STLinux-2.4/devkit/armv7/arm-cortex-linux-gnueabi/bin:$PATH 使得cmake文件尋找gcc的時候,找到armv7裡的gcc cmake .. make 編譯完成,把libosscore.a拷到工程中,編譯,出現relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC錯誤,是在生成libosscore.a的時候,沒有使用-fPIC參數的緣故,於是,修改OSSC-master根目錄下的CMakeLists.txt文件 把 SET(CMAKE_C_FLAGS "-std=c99 -Wall " CACHE STRING "Flags used by the compiler during all build types." FORCE) 改為 SET(CMAKE_C_FLAGS "-std=c99 -Wall -fPIC" CACHE STRING "Flags used by the compiler during all build types." FORCE) 刪掉build中的CMakeCache.txt後重新cmake 和make 。 搞定 2.libcurl.a 下載curl-7.42.1.tar.gz 這個庫是用configure編譯的 同樣export PATH=/home/slk/STM/STLinux-2.4/devkit/armv7/arm-cortex-linux-gnueabi/bin:$PATH,這樣也不用給configure傳參來設定CC。 生成後同樣有因為沒加-fPIC導致的問題,所以修改所有Makefile文件,在CFALGS後面補上-fPIC 搞定 3.libmysqlclient.a 下載mysql-connector-c-6.1.6-src.tar.gz 這個庫是用cmake編譯的,所以一切步驟同編譯libosscore.a,不過可以省去修改CMakeLists.txt一步。 在make到88%的時候,發生 /bin/sh: ./comp_err,無法執行的二進制文件 錯誤 於是,再解壓一份mysql-connector-c-6.1.6-src,用linux下的gcc進行編譯,編譯成功後,將comp_err拷到交叉編譯那邊的相應文件夾中,繼續make,成功。 搞定。

http://xxxxxx/Linuxjc/1141593.html TechArticle

Copyright © Linux教程網 All Rights Reserved