移植通過CMake編譯的庫的各種坑

1.源碼庫一定要注意是.tar.*格式的壓縮包,必須通過tar命令進行解壓縮,如果是zip格式的壓縮包,一般是win版本的,在linux編譯就容易出現各種格式問題,導致無法編譯通過

2.因爲我通過 cmake -D CMAKE_TOOLCHIAIN_FILE=/home/liuy/toolchain.cmake指定工具鏈版本,總是無法編譯通過,所以只能通過直接把編譯變量寫進CMakeLists.txt文件中.

交叉編譯以下變量一般寫在:project(xxxxx C),這句前面,否則根本無法交叉編譯,設別不到交叉工具鏈的

set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
set(tools /home/liuy/workplace/yjjp4/tools)
set(CMAKE_C_COMPILER ${tools}/bin/arm-linux-gnueabihf-gcc)
set(CMAKE_CXX_COMPILER ${tools}/bin/arm-linux-gnueabihf-g++)
set(CMAKE_FIND_ROOT_PATH /home/liuy/workplace/yjjp4/tools /home/liuy/workplace/yjjp4/WrtProject/3PartyLib/install_lib/)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
include_directories(/home/liuy/workplace/yjjp4/WrtProject/3Partylib/install_lib/include)
link_directories(/home/liuy/workplace/yjjp4/wrtproject/3partylib/install_lib/lib /home/liuy/workplace/yjjp4/tools/arm-linux-gnueabihf/libc/lib)

以下變量寫在project(xxxxx C)之後,否則安裝失敗

set(CMAKE_INSTALL_PREFIX /home/liuy/workplace/yjjp4/WrtProject/3PartyLib/install_lib)

在交叉編譯libpng庫的時候,出現:

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
M_LIBRARY
    linked by target "png-fix-itxt" in directory /home/liuy/workplace/yjjp4/WrtProject/3PartyLib/libpng-1.6.37
    linked by target "png" in directory /home/liuy/workplace/yjjp4/WrtProject/3PartyLib/libpng-1.6.37
    linked by target "png_static" in directory /home/liuy/workplace/yjjp4/WrtProject/3PartyLib/libpng-1.6.37
後面提升需要M_LIBRARY變量設置,查看CMakeList.txt,發現是查找libm的,那麼添加一下變量到CMakeList.txt中可以了,一開始以爲添加路徑而已,還是出錯,最終嘗試是添加到文件纔是對的

set(M_LIBRARY /home/liuy/workplace/yjjp4/tools/arm-linux-gnueabihf/libc/lib/libm-2.28.so)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章