首页 > 系统相关 >嵌入式Linux: 使用Cmake交叉编译tslib库

嵌入式Linux: 使用Cmake交叉编译tslib库

时间:2023-12-04 12:44:36浏览次数:34  
标签:cmake Linux 编译 Cmake linux tslib main arm

在编译第三方库时,往往要指定头文件和库的链接地址,每次输入又比较麻烦,所以产生了是否能用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

相关文章

  • Linux上使用CMake简单例子
    记录一下自己简单在linux-Ubuntu上用cmake的例子首先安装cmakesudoaptinstallcmake然后创建一个文件夹,里面放点例子代码main.cpp//main.cpp#include<iostream>#include"demo.h"usingnamespacestd;intmain(){Demod;d.show();return0;}demo.h//de......
  • Linux LVM扩容详解
    1、将物理磁盘设备初始化为物理卷pvcreate/dev/sdb/dev/sdc查看物理卷命令:pvs删除物理卷:rmpv/dev/sdb2、创建卷组,并将PV加入卷组vgcreatename/dev/sdb/dev/sdc查看卷组:vgs删除卷组rmvgname3、基于卷组创建逻辑卷lvcreate-nname1-L2Gname......
  • linux上的rsync命令详解【转】
    1.rsync简介rsync就是远程同步的意思remotesync.rsync被用在UNIX/Linux执行备份操作操作.rsync工具包被用来从一个位置到另一个位置高效地同步文件和文件夹.rsync可以实现在同一台机器的不同文件直接备份,也可以跨服务器备份.2.rsync的重要特性速度快:初次同步时,......
  • 在Linux系统中通过 vim 进行文本替换(转)
    在Linux系统中通过vim进行文本替换本文转自:https://www.cnblogs.com/wind-wang/p/5768000.html在vim中,可以通过:setnu或:setnumber的命令来显示文本的行号在VIM中进行文本替换:1.替换当前行中的内容::s/from/to/(s即substitude):s/from/to/:将......
  • Linux开启SSH连接
    1、查看是否安装 openssh-server:yumlistinstalled|grepopenssh-server已安装成功,如下图2、如果没有任何输出显示表示没有安装openssh-server,通过输入 yuminstallopenssh-server安装3、进入/etc/ssh/目录下找到配置文件sshd_config,用Vim编辑器打开。命令vimsshd_......
  • linux空间排查
    linux空间排查对于Linux空间排查,可以使用以下命令来查看磁盘空间使用情况:使用df命令查看磁盘空间使用情况:df-h该命令将显示每个挂载点的磁盘空间使用情况,包括已用空间、可用空间和挂载点。使用du命令查看指定目录的磁盘空间使用情况:du-h/path/to/directory将/path/to/di......
  • emscripten cmake 简单尝试
    emscripten提供了比较完整的工具链,包含了对于make以及cmake等工具的支持,以下是一个简单的c代码转换为wasm的demo同时基于cmake进行项目管理参考项目项目结构├──CMakeLists.txt├──README.md├──app.js└──src├──add.c├──add.h└─......
  • Linux下设置定时任务常用的三种方法
    在Linux系统中,设置定时任务是一项常见且重要的操作,它有助于自动化执行各种任务,如系统维护、备份和日志审计。Linux提供了多种工具来安排这些自动化任务,其中最常用的三种方法是Cron、At和SystemdTimers。1.cronCron是Linux中最传统且广泛使用的定时任务工具。它允许用......
  • Linux学习之进程管理
    一.查看进程5.2.1静态查看进程psaux可以查看当前目录某一瞬间的进程状态psaux--sort-%cpu可以查看CPU使用率,按照CPU占用百分比排序ps-ef可以查看UID,PID,PPID等信息psaxo可以自定义显示的字段使用pidof,pgrep命令都可以查看指定进程的PID5.2.2动态进程查看top命令......
  • Linux 上的容器技术
    容器实现封闭的环境主要要靠两种技术,一种是看起来是隔离的技术,称为namespace(命名空间)。在每个namespace中的应用看到的,都是不同的IP地址、用户空间、进程ID等。另一种是用起来是隔离的技术,称为cgroup(网络资源限制),即明明整台机器有很多的CPU、内存,但是一个应用只能用其中的......