在编译第三方库时,往往要指定头文件和库的链接地址,每次输入又比较麻烦,所以产生了是否能用Cmake交差编译嵌入式Linux的想法,经过实验确实可行,以下记录操作过程。
一、新建项目
项目目录如下:
arm_build:安放交叉编译生成的文件
build: 安放gcc编译生成的文件
arm_linux_setup.cmake 指定编译器
CMakeLists.txt cmake文件
main.c 源文件
CMakeLists.txt
# 配置cmake最低版本 cmake_minimum_required(VERSION 3.5) #工程名字 project(demo) #配置tslib的头文件和库文件地址 set(TSLIB_INCLUDE_DIRS /home/wm/docker_ubuntu/linux/code/tslib_code/tslib-1.22/tmp/include) set(TSLIB_LIBRARIES /home/wm/docker_ubuntu/linux/code/tslib_code/tslib-1.22/tmp/lib/libts.so) #定义一个可执行文件的目标 add_executable(main main.c) #链接tslib库 target_include_directories(main PRIVATE ${TSLIB_INCLUDE_DIRS}) target_link_libraries(main PRIVATE ${TSLIB_LIBRARIES})
arm_linux_setup.cmake
#指定编译系统和硬件 set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_PROCESSOR arm) #配置工具链安装地址 set(tools /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf) #配置C/C++交叉编译器地址 set(CMAKE_C_COMPILER ${tools}/bin/arm-linux-gnueabihf-gcc) set(CMAKE_CXX_COMPILER ${tools}/bin/arm-linux-gnueabihf-g++)
main.c
#include <stdio.h> #include <tslib.h> int main(void) { struct tsdev *ts; ts = ts_setup(NULL,0); printf("hello,cmake!\r\n"); return 0; }
二、开始编译
1、打开项目文件中的arm_build文件夹
cd /home/wm/docker_ubuntu/study/test_tslib/arm_build
2、输入cmake指令,指定使用的交叉编译器
注意:1、-DCMAKE_TOOLCHAIN_FILE=../arm_linux_setup.cmake为加载指定编译器文件 必须在..之前。
2、cmake后想重新cmake编译,删除文件夹内的CMakeCache.txt文件即可。
cmake -DCMAKE_TOOLCHAIN_FILE=../arm_linux_setup.cmake ..
输出结果
3、输入make指令编译
make
输出结果
4、确定文件是否编译成功
file main
输出结果
显示为为32位arm编译,实验成功。
标签:cmake,Linux,编译,Cmake,linux,tslib,main,arm From: https://www.cnblogs.com/Mwang/p/17874586.html