-
intel ice驱动1.9.11 版本在openeuler22.03-LTS 无法直接编译安装,需要按照以下步骤操作环境 openeuler22.03-LTS aarch641.intel官网下载驱动链接:https://downloadmirror.intel.com/738725/ice-1.9.11.tar.gz2.解压软件包tar -xvf ice-1.9.11.tar.gz3.cd ice-1.9.11/src替换这三个文件(文件在附件中)ice_ethtool.c ice_ptp.c 路径 ice-1.9.11/srcauxiliary_bus.h 路径 ice-1.9.11/src/linux4.cd ice-1.9.11/src5.make install6.查看新驱动 modinfo ice|more环境 openeuler22.03-LTS x86_641.intel官网下载驱动链接:https://downloadmirror.intel.com/738725/ice-1.9.11.tar.gz2.解压软件包tar -xvf ice-1.9.11.tar.gz3.cd ice-1.9.11/src替换这两个文件(文件在附件中)ice_ethtool.c 路径 ice-1.9.11/srcauxiliary_bus.h 路径 ice-1.9.11/src/linux4.cd ice-1.9.11/src5.make install6.查看新驱动 modinfo ice|more
-
通常在一个项目里,我们的规则是:1)如果这个工程没有编译过,那么我们的所有C文件都要编译并被链接。2)如果这个工程的某几个C文件被修改,那么我们只编译被修改的C文件,并链接目标程序。3)如果这个工程的头文件被改变了,那么我们需要编译引用了这几个头文件的C文件,并链接目标程序。其实就是智能的识别哪些编译链接需要做,哪些不用做避免不必要的时间消耗只要我们的Makefile写得够好,我们只用一个make命令就可以完成,make命令会自动智能地根据当前的文件修改的情况来确定哪些文件需要重编译,从而自己编译所需要的文件和链接目标程序。target … : prerequisites …command……target:也就是一个目标文件,可以是ObjectFile,也可以是执行文件。还可以是一个标签(Label),对于标签这种特性,暂不叙述。prerequisites:要生成那个target所需要的文件或是目标。command:也就是make需要执行的命令。(任意的Shell命令)这是一个文件的依赖关系,也就是说,target这一个或多个的目标文件依赖于prerequisites中的文件,其生成规则定义在command中。说白一点就是说,prerequisites中如果有一个以上的文件比target文件要新的话,command所定义的命令就会被执行。这就是Makefile的规则。也就是Makefile中最核心的内容。hello_demo : hellospeak.o speak.o //由hellospeak.o speak.o链接成目标hello_demo gcc -o hello_demo hellospeak.o speak.o //执行下面的命令 hellospeak.o : hellospeak.c speak.h //如果一些hellospeak.c的函数声明是在头文件speak.h中那么也得在这后面加上 gcc -c hellospeak.c speak.o : speak.c speak.h gcc -c speak.c clean : rm hello_demo speak.o hellospeak.o //当执行make clean时就会执行这个语句 //speak.h#include<stdio.h>#include<stdlib.h>void helloSpeak();-------------------------------------------------------------- //speak.c#include"speak.h"void helloSpeak(){ printf("Hello Makefile\n");}-------------------------------------------------------------- //main.c#include"speak.h"int main(){ helloSpeak(); return 0;} --------------------------------------------------------------//MakefileHello: main.o speak.o gcc -o Hello main.o speak.omain.o: main.c speak.h gcc -c main.cspeak.o: speak.c speak.h gcc -c speak.cclean: rm Hello speak.o main.o ~
-
如题,我对hiai_demo更改了一点,但是用到了ros,在进行工程编译时,需要用到ros相关的库。假如我的ros的库的路径为:/opt/ros/kinetic我应该如何更改makefile-main以及makefile-so这两个文件。
-
一、准备工作 1、到openssl官网下载最新版本openssl(如openssl-1.1.1d.tar.gz),上传到linux编译机上(如上传到目录/home/test下),并使用tar -xvf openssl-1.1.1d.tar.gz解压: 2、将要用到的交叉编译工具链解压后,找到交叉编译器所在路径(如果直接使用系统的gcc,可跳过这一步,但要保证gcc已安装): 注意:gcc/g++/ar/ranlib/nm等文件的名字根据编译链的不同,文件名开头会有所不同,但文件名结尾是不变的,如arm架构比较常见的编译器是arm-linux-gcc二、配置 进入openssl源码目录,运行如下配置命令 ./config shared --prefix=/home/test/openssl --openssldir=/home/test/openssl/ssl或./config no-asm shared --prefix=/home/test/openssl --openssldir=/home/test/openssl/ssl 其中prefix 是安装目录,openssldir 是配置文件目录,shared 作用是生成动态链接库(即.so库) 注意:no-asm表示不使用汇编代码,如果编译有问题再加,没有问题就不加 注意: 如果遇到64位的编译链,需要添加sysroot参数,用如下命令配置(+参考图片): ./config no-asm shared --prefix=/home/test/openssl --openssldir=/home/test/openssl/ssl --sysroot="{头文件所在路径}" 一般来说,头文件所在路径 与 XXX-gcc/g++/ar/nm等(XXX是交叉编译器名字的前缀)的所在目录不一样,在另外一个大目录下(如下图所示) Tips: 可以先用find ./ -name *-gcc命令找到gcc/g++/ar/ranlib/nm等文件所在目录,那另一个目录就是头文件所在路径 从上图看,gcc/g++/ar/ranlib/nm等文件在sysroots/x86_64-fslsdk-linux的某目录,所以头文件一般在另一个目录sysroots/ppc64e6500-fsl-linux下,且sysroots/ppc64e6500-fsl-linux下的usr/include目录下面有许多(不是一两个)头文件(也就是说--sysroot的值是usr/include所在的目录): 三、修改Makefile 配置完成后会在openssl源码目录下生成一个Makefile文件,打开查看内容,会看到CROSS_COMPILE的值是空的 这时要将CROSS_COMPILE的值修改为XXX-gcc所在绝对路径+XXX-gcc的文件名前缀(参考下图),也就是说要先找到交叉编译工具xxx-gcc/g++/ar/nm等文件所在路径(其中“XXX-”是交叉编译工具文件名前缀): 修改CROSS_COMPILE的值最终是为了修改arm-linux-xxx-gcc/ar/ranlib/nm等的路径,在比较老的openssl版本中,没有CROSS_COMPILE参数,需要修改如下5个变量的值 (注意下图所用的交叉编译工具不是跟前面的不一样,所以路径也不同): 四、编译出库 修改完Makefile后就可以进行编译了,到openssl源码目录下,运行make命令: openssl源码目录下,运行make命令: make 如果没有报错,再运行make install make install 在配置的openssl安装目录下/home/test/openssl找到lib目录,有如下两个文件: libcrypto.so.1.1、libssl.so.1.1和软链接libcrypto.so、libssl.so 五、其他说明 1、交叉编译工具不是在任何环境上都可使用的,需要系统环境和编译工具匹配才可以,主要看CPU和指令集 2、如果不需要交叉编译工具,而是直接使用gcc,那么,配置生成Makefile后不需要修改Makefile(即跳过第三步),直接编译即可 3、如果make出错后修改了Makefile,记得make clean后再make 4、有的编译工具是32位的,如果在64位的linux机器上使用,可能会报如下错误,这时只要将Makefile中的-m64都删除,再进行编译即可
-
文档位置已迁移至如下链接:https://support.huaweicloud.com/tstg-kunpenghpcs/kunpenghpcs_tstg_0003.html
-
记录一下nmon16k的安装过程及使用方法,方便以后参考1、操作系统:中标麒麟7U6,已安装好gcc7.3(关于安装gcc写在MySQL的安装文档中),cmake3.9.2,ncurses-devel*2、安装包获取:nmon官网地址http://nmon.sourceforge.net/pmwiki.php?n=Site.CompilingNmon,按住CTRL+F输入lmon16k.c,回车即可定位到;同理搜索makefile(点击下载之后会跳转到下载页面,等待几秒即可开始下载)3、在/opt目录下创建一个nmon的目录用于存放lmon16k.c和makefile文件4、准备编译 vi makefile ,控制模式下输入/arm,定位到arm版本位置,选择需要的版本复制并退出5、cp lmon16k.c lmon.c重命名文件6、执行编译 make nmon_arm_raspian(就是前面复制的编译命令),等待完成,完成之后会生成一个nmon_arm_raspian文件7、完成后在当前目录下执行./nmon_arm_raspian进入交互界面也可以通过命令行模式生成报告./nmon_arm_raspian -f -s 1 -c 600 -m /opt说明:-f表示生成文件;-s参数指定采集频率,单位是秒;-c指定采集次数;-m指定文件生成位置 ;最后生成的文件是以主机名+时间戳命名的
-
在用LiteOS Studio编译和烧录文件时,大家是否清楚,代码是怎么构建起来的,最终烧录到开发版的文件是哪个,怎么生成的?在导入工程后,都是需要设置我们工程的Makefile,LiteOS Studio才能正常编译我们的代码,有没有朋友认真地看过这个文件?前方高能!!接下来我们对这个文件来进行肢解!!!!我们以小熊开发部提供的样例(E53_IA1)来进行分析:Makefile 所在目录:E53_IA1\targets\STM32L431_BearPi\GCC\Makefile简单的普及下Makefile几个怪怪的符号,大佬请忽略:格式:[目标文件 产品] : [依赖文件,原材料] 对原材料的处理样例:XXX : aaa bbb ccc $(CC) $^ -o $@ $(CC) $< -o $@$@--目标文件->XXX $^--所有的依赖文件->aaa bbb ccc$<--第一个依赖文件->aaa还有一个%.c 代表所有以.c结尾的文件makefile里的函数:return = $(functionname arg1,arg2,arg3...)。这里用到的函数有:$(addprefix 前缀,加前缀对象) 加前缀函数。$(notdir $(C_SOURCES:.c=.o)) 去除所有的目录信息,文件名列表将只有文件名$(sort $(dir $(C_SOURCES))) 排序函数 并去重$(dir $(C_SOURCES)) 取目录函数$(wildcard $(BUILD_DIR)/*.d) 扩展通配符 列举所有.d文件继续!!!!//包含配置选项文件include config.mkinclude prune.mk//定义我们生成目标文件名,最终我们会生成.elf .bin .hex这三个家伙,用于烧录和调试TARGET = Huawei_LiteOS定义编译工具链:PREFIX = arm-none-eabi-//编译链前缀CC = $(PREFIX)gcc //编译工具AS = $(PREFIX)gcc -x assembler-with-cpp //汇编工具OBJCOPY = $(PREFIX)objcopy //拷贝工具 可以进行格式转换OBJDUMP = $(PREFIX)objdump //反汇编工具AR = $(PREFIX)ar //打包工具 生成静态库SZ = $(PREFIX)size //列出程序文件中各段的大小LD = $(PREFIX)ld //链接工具HEX = $(OBJCOPY) -O ihex //生成十六进制文件BIN = $(OBJCOPY) -O binary -S //生成二进制镜像文件 用户烧录//定义编译文件生成目录BUILD_DIR = build添加原材料:添加汇编源码ASM_SOURCES_s = \ ${wildcard $(PROJECTBASE)/los_startup_gcc.s}添加C语音源码 .......C_SOURCES += $(HAL_DRIVER_SRC).......添加宏定义 .......C_DEFS += -DMBEDTLS_DEBUG_C .......添加C语音头文件 .......C_INCLUDES += $(OTA_INC) .......添加汇编头文件AS_INCLUDES = 生成汇编混编文件(.lst):$(BUILD_DIR)/%.o: %.c Makefile | $(BUILD_DIR) //在生成.o的文件的同时,将“-a,-ad,-alms=XX”选项传递给汇编程序,生成.lst文件,这些文件在单步调试,汇编代码窗口,显示的就是该文件。$(CC) -c $(CFLAGS) -Wa,-a,-ad,-alms=$(BUILD_DIR)/$(notdir $(<:.c=.lst)) $< -o $@左边为main.lst 右边为单步调试时,汇编窗口。生成依赖关系信息文件(.d): (这是我们看到build目录下有很多.d文件的原因)CFLAGS += -MMD -MP -MF"$(@:%.o=%.d)" //包含所有.d文件。-include 当文件不存在是不报错退出。没带“-”则会报错退出-include $(wildcard $(BUILD_DIR)/*.d)材料准备好了,开始生产拉设置编译选项CFLAGS设置引用的库LIBS设置链接选项LDFLAGS开始生产者三个家伙啦!all: $(BUILD_DIR)/$(TARGET).elf $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin文件生成路径:.c ---> .o ---> .elf --->.bin .hex ^ |.s ---> .o---------//编译所有.c文件$(BUILD_DIR)/%.o: %.c Makefile config.mk prune.mk | $(BUILD_DIR)$(CC) -c $(CFLAGS) -Wa,-a,-ad,-alms=$(BUILD_DIR)/$(notdir $(<:.c=.lst)) $< -o $@//编译所有.s汇编文件$(BUILD_DIR)/%.o: %.s Makefile config.mk prune.mk | $(BUILD_DIR)$(AS) -c $(CFLAGS) $< -o $@//生成ellf文件$(BUILD_DIR)/$(TARGET).elf: $(OBJECTS) Makefile config.mk prune.mk$(CC) $(OBJECTS) $(LDFLAGS) -o $@$(SZ) $@//生成十六进制文件$(BUILD_DIR)/%.hex: $(BUILD_DIR)/%.elf | $(BUILD_DIR)$(HEX) $< $@//生成二进制文件$(BUILD_DIR)/%.bin: $(BUILD_DIR)/%.elf | $(BUILD_DIR)$(BIN) $< $@后续将以此作为学习笔记,从不同的角度来学习liteos及iot相关的知识:下一个笔记:利用对比工具,看看开发版提供的例程和liteos源码的区别,浅谈liteos的移植。
推荐直播
-
华为云码道-玩转OpenClaw,在线养虾2026/03/11 周三 19:00-21:00
刘昱,华为云高级工程师/谈心,华为云技术专家/李海仑,上海圭卓智能科技有限公司CEO
OpenClaw 火爆开发者圈,华为云码道最新推出 Skill ——开发者只需输入一句口令,即可部署一个功能完整的「小龙虾」智能体。直播带你玩转华为云码道,玩转OpenClaw
回顾中 -
华为云码道-AI时代应用开发利器2026/03/18 周三 19:00-20:00
童得力,华为云开发者生态运营总监/姚圣伟,华为云HCDE开发者专家
本次直播由华为专家带你实战应用开发,看华为云码道(CodeArts)代码智能体如何在AI时代让你的创意应用快速落地。更有华为云HCDE开发者专家带你用码道玩转JiuwenClaw,让小艺成为你的AI助理。
回顾中 -
Skill 构建 × 智能创作:基于华为云码道的 AI 内容生产提效方案2026/03/25 周三 19:00-20:00
余伟,华为云软件研发工程师/万邵业(万少),华为云HCDE开发者专家
本次直播带来两大实战:华为云码道 Skill-Creator 手把手搭建专属知识库 Skill;如何用码道提效 OpenClaw 小说文本,打造从大纲到成稿的 AI 原创小说全链路。技术干货 + OPC创作思路,一次讲透!
回顾中
热门标签