编译原理
文章平均质量分 50
AllenSun-1990
上海先楫半导体资深FAE工程师,不定期更新HPMicro高性能MCU应用案例。
展开
-
Makefile设计条件编译
Makefile进行条件编译原创 2022-07-14 14:44:32 · 1348 阅读 · 0 评论 -
Cmake入门之——打印消息
一 概述打印日志消息是软件开发中一个重要的功能。本文要讲述的Cmake的打印消息方法message,用于编译时期在cmake项目中输出日志信息,也可用于断点调试时,随时查看日志信息。二 Cmake方法介绍2.1 message打印方法复制1message([<mode>] "message to display" ...)message:消息名字,可在CMakeLists.txt或者.cmake脚本文件中输入,且有提示,不区分大小写mode:打印消息的类别,有FATAL_ER转载 2021-03-01 16:19:34 · 4408 阅读 · 0 评论 -
C语言中volatile关键字的作用
一.前言 编译器优化介绍: 由于内存访问速度远不及CPU处理速度,为提高机器整体性能,1)在硬件上:引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线,提高执行速度。2)软件一级的优化:一种是在编写代码时由程序员优化,另一种是由编译器进行优化。编译器优化常用的方法有:将内存变量缓存到寄存器。由于访问寄存器要比访问内存单元快的多,编译器在存取变量时,为提高存取速度,编译器优化有时..转载 2021-05-09 07:53:24 · 1904 阅读 · 0 评论 -
C++编译错误:error: array used as initializer
在.h里面直接对数组进行赋值,会报错error: array used as initializerclass Eth_APP //final : public ethBase{public: /// @brief Class constructor /// @details This constructor initializes the Task parameter...原创 2020-04-19 19:13:31 · 3488 阅读 · 0 评论 -
虚拟机ubuntu和开发板UDP Socket通信实例
服务器端的步骤如下:1. socket: 建立一个socket2. bind: 将这个socket绑定在某个端口上(AF_INET)3. recvfrom: 如果没有客户端发起请求,则会阻塞在这个函数里4. close: 通信完成后关闭socket客户端的步骤如下:1. socket: 建立一个socket2. se...原创 2020-04-19 16:55:06 · 1842 阅读 · 1 评论 -
基于开发板的文件系统制作根文件系统 rootfs.img
最近在开发一个项目,这个项目之前一直是用友坚的UT4418的板子。因为没货,并且由于UT4418的Linux系统开发QT的资料比较少,就用了飞凌的OK4418的板子。这两款芯片都是用的S5P4418的CPU。后来使用飞凌OK4418的板子测试,发现串口数据总是上不来。于是又切换到UT4418的板子上面开发。两个板子其实工具链还有QT的lib都是通用的。所以,只要把UT4418板子上面的文件和飞凌的...原创 2020-02-14 09:53:25 · 609 阅读 · 0 评论 -
面试问题之操作系统:动态链接库和静态链接库的区别
动态链接库是一个可以被其它应用程序共享的程序模块,其中封装了一些可以被共享的例程和资源。动态链接库文件名的扩展名一般是dll,也有可能是drv,sys和fon,它和可执行文件(exe)非常类似,区别在于动态链接库中虽然包含了可执行代码却不能单独执行,而应由应用程序直接或间接调用。 动态链接库是相对于静态链接而言的。所谓静态链接是指把要调用的函数或者过程链接到可执行文件中,成为可执行文件的...转载 2019-12-30 10:31:58 · 492 阅读 · 0 评论 -
ARM学习之实现开机自动登录
1.首先我们在/bin目录下创建一个名为autologin的可执行文件(注意这里的/bin目录和autologin都是根据个人设定的,只要你能记住路径和文件名称即可。可执行文件没有后缀名,如果文件里边的内容是用C语言编写的,要根据自己的系统的交叉编译链生成可执行的二进制文件,例如arm-linux-gcc autologin.c -o autologin(跟开发板的交叉编译工具链同步),如果只是s...原创 2019-12-13 22:41:33 · 834 阅读 · 0 评论 -
C++:编译不同的函数体
只编译.cpp不要添加额外的.h,使用相同的.h。不同的实现。意思是include directory相同,源文件不同。原创 2019-12-03 11:27:42 · 104 阅读 · 0 评论 -
make编译打印详细日志
常用的是make V=1具体如下:命令 描述 make V=0 quiet build (default) make V=1 verbose build make V=2 give reason for rebuild of target 不打印详细信息:make telematics-services-test CAS_TARGET_HW...原创 2019-11-22 15:11:18 · 7623 阅读 · 0 评论 -
shell自动编译脚本
#!/bin/bash############################### Script configuration area start ###################################CODE_PATH="repo init -u buic-scm:gm/manifest -b gm-imx8-phantom-gm-3.y -g all --rep...原创 2019-11-15 11:06:42 · 418 阅读 · 0 评论 -
编译:解决.h中初始化变量multiple definition问题
解决方法,在初始化变量的时候,加static或者consttype.h中这样初始化数组就会出现multiple definition的问题。pal::dtc::dtc_ftb_t DtcFtbTable[DTC_TOTAL_NUMBER] ={ 0xF00041, 0xF00044, 0xF00045, 0xF00046, 0xF00047, 0xF00049, 0xF00055...原创 2019-11-12 16:36:57 · 307 阅读 · 0 评论 -
CMAKE 中 add_definitions的用法
cmake_minimum_required(VERSION 3.14 FATAL_ERROR)set(PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")add_definitions("-DUNITTEST")if(${UNITTEST}) add_subdirectory(unit-tests)endif() ...原创 2019-10-30 11:33:13 · 15662 阅读 · 2 评论 -
链接库问题: error while loading shared libraries: lib.so.: cannot open shared object file
找到原因之后下面是解决方法:方法一:echo "/usr/lib64/mysol" >> /etc/ld.so.confldconfigld.so.conf动态链接库装载器,操作系统会根据这里面写的路径去找库。ldconfig是告诉操作系统要引入新的变量了,需要重新识别一下。方法二:export LD_LIBRARY_PATH=/usr/local/X11/l...原创 2019-09-18 21:47:18 · 902 阅读 · 0 评论 -
configure:checking whether malloc(0) returns NULL
交叉编译:echo enable_malloc0returnsnull=yes>arm-linux.cacheCC=arm-cortex_a9-linux-gnueabi-gcc CFLAGS=-O2 ./autogen.sh --host=arm-linux --prefix=/usr/local/X11 --cache-file=arm-linux.cache...原创 2019-09-17 20:52:13 · 512 阅读 · 0 评论 -
configure找不到链接库位置
configure: error: C compiler cannot create executables打开configure.log,发现找不到链接库位置。使用./configure --help,命令,发现可以使用CFLAGS,指明lib的位置。如下所示:CC=arm-cortex_a9-linux-gnueabi-gcc CFLAGS="-L/usr/local/X11/li...原创 2019-09-16 23:39:46 · 2331 阅读 · 0 评论