首页 > 系统相关 >Linux系统编译(yocto)

Linux系统编译(yocto)

时间:2022-12-06 19:13:20浏览次数:46  
标签:yocto OBJS %. SRC 编译 test Linux ################################################

1. Makefile编写

  makefile如下所示,编译生成静态库;

  $^: 表示所有的.o文件

  $@: 表示目标文件

  

CROSS =   
CC = $(CROSS)arm-linux-gnueabi-gcc 
CXX = $(CROSS)arm-linux-gnueabi-g++  
DEBUG = -g
CFLAGS = $(DEBUG) -Wall -c -fPIC -pthread -mfloat-abi=hard
MV = mv -f  
RM = rm -rf  
LN = ln -sf  

TARGET = RTK

TOP_PATH = $(shell pwd)

INC_PATH = $(TOP_PATH)

SRC_PATH += $(TOP_PATH)
SRC_PATH += $(TOP_PATH)/gsl
SRC_PATH += $(TOP_PATH)/BASEDLL
SRC_PATH += $(TOP_PATH)/GNSSDLL
SRC_PATH += $(TOP_PATH)/RTIEDLL

DIRS = $(shell find $(SRC_PATH))
FILES = $(foreach dir, $(DIRS), $(wildcard $(dir)/*.cpp))

BUILD_DIR = $(TOP_PATH)/build
##########################################################  
# modules  
##########################################################  
 

##########################################################  
# srcs  
##########################################################  
SRCS_CPP += $(foreach dir, $(DIRS), $(wildcard $(dir)/*.cpp))  
SRCS_CC += $(foreach dir, $(DIRS), $(wildcard $(dir)/*.cc))  
SRCS_C += $(foreach dir, $(DIRS), $(wildcard $(dir)/*.c))  

##########################################################  
# objs  
##########################################################  
OBJS_CPP = $(patsubst %.cpp, %.o, $(SRCS_CPP))  
OBJS_CC = $(patsubst %.cc, %.o, $(SRCS_CC))  
OBJS_C = $(patsubst %.c, %.o, $(SRCS_C))  

##########################################################  
# paths
##########################################################  


##########################################################  
# libs
##########################################################  

##########################################################  
# building
##########################################################  
all:$(TARGET)

$(TARGET) : $(OBJS_CPP) $(OBJS_CC) $(OBJS_C)  
    
    #$(CXX) -shared -fpic $^ -o lib.so
    ar -crv libRTK.a $^ 

$(OBJS_CPP):%.o : %.cpp
    $(CXX) $(CFLAGS) $< -o $@ -I$(INC_PATH)

$(OBJS_CC):%.o : %.cc
    $(CXX) $(CFLAGS) $< -o $@ -I$(INC_PATH)

$(OBJS_C):%.o : %.c
    $(CXX) $(CFLAGS) $< -o $@ -I$(INC_PATH)

$(OBJS_C):%.o : %.c
    $(CC) $(CFLAGS) $< -o $@ -I$(INC_PATH)



.PHONY : clean  
clean:  
    @ $(RM) $(TARGET) $(OBJS_CPP) $(OBJS_CC) $(OBJS_C)
    

 

2. yocto的.bb文件包含静态库

 

DESCRIPTION = "A simple UART test application"
SECTION = "extras"
LICENSE = "GPLv2+ & LGPLv2.1+"
PR = "r0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"

inherit externalsrc

EXTERNALSRC_pn-uart-test ?= "${ST_LOCAL_SRC}carproc-app/uart-test"

FILES_${PN} = "${bindir}/uart-test"

do_compile() {


    ${CXX} ${CXXFLAGS} ${LDFLAGS} -pthread ${S}/uart_test.cpp ${ST_LOCAL_SRC}carproc-app/uart-test/lib/libRTK.a -o uart-test -I ${ST_LOCAL_SRC}carproc-app/uart-test
}

do_install_append() {
    install -d ${D}${bindir}
    install -m 0755 ${B}/uart-test ${D}${bindir}
}

 

Makefile编译要跟yocto一致使用交叉编译,编译选项尽可能一致

标签:yocto,OBJS,%.,SRC,编译,test,Linux,################################################
From: https://www.cnblogs.com/boring-luobo/p/16960223.html

相关文章

  • 密码正确无法登陆Linux系统
    密码正确无法登陆Linux系统用户名密码都正确却不能登录Linux服务器这,最可能有以下几种:1、磁盘空间满了无法登录Linux服务器。重启服务器试试或者删掉一些不必要的文件。2......
  • linux expect 自动交互命令
    如何从机器A上ssh到机器B上,然后执行机器B上的命令?如何使之自动化完成?看完下面的文章你就明白了一、安装expect是基于tcl演变而来的,所以很多语法和tcl类似sudoapt-get......
  • 在windows下导入react项目并且打包编译后部署到nginx上
     在windows下导入react项目并且打包编译后部署到nginx上一、安装npm二、创建react项目三、安装nginx四、总结最近接手了公司的一个django项目,这是应该前后端分......
  • Linux系统安装Mysql
    环境和版本 Linux:CentOS8Mysql:8.0.20一、在linux系统的/usr/local目录下创建mysql文件夹切换目录:cd/usr/local创建文件夹:mkdirmysql二、下载安装包1、切换......
  • linux 给文件替换字符串/替换内容/替换某行 (shell,sed)
    本文是要讲linux不打开文档/文件的情况下,替换文本内容。打开文档,在文档/文件内替换内容的,可以用vim,可参考这篇文章vim替换文本。话题相关#linux文件替换字符串#sed字......
  • VS 2017 调试窗口显示“ C#编译器内部错误”
    调试时,我尝试评估简单的表达式,例如inta=2;在即时窗口中。一个错误C#编译器中的内部错误解决方式:调试-》选项-》常规-》使用托管兼容模式(勾选)  ......
  • 在Java中调用系统 Windows Shell或者Linux Shell命令行的使用
    Jdk8中的Runtime类以及Process类结合起来可用于调用系统的命令行,具体使用参考JDK8手册Jdk17版本中这两个类的使用有一定的改变,用起来会更加方便,有需要可以参考JDK17手册......
  • Linux常用(实用)命令大全
    pwd显示工作路径shutdown-hnow关闭系统/halt关闭系统shutdown-rnow重启/reboot重启systemctlstopfirewalld关闭防火墙ipaddr查看ip地址1、c......
  • Windows 上安装 Linux
    使用WSL在Windows上安装Linuxwsl--install其中,也讲到Linux卸载;如果wsl安装Linux失败,可以参考如下利用MicrosoftStore安装Linux发行版我是遇到,win11安装的......
  • linux更新系统时间
    问题linux时间和本地时间对不上:linux上的时间为本地实际时间为:解决办法第一步,安装nptdateyuminstall-yntpdate第二步,删除本地的localtime文件并复制上海时......