编译
编译相关笔记
duapple
这个作者很懒,什么都没留下…
展开
-
rt-thread 移植调试记录
这里移植仅仅是利用rt-thread源码目录已经移植好的文件,组建自己的工程,不需要自己编写汇编完成底层移植。我这里的基础文件是通过RT-Thread Studio创建的基础工程,直接复制使用的。根据我们使用的芯片架构,进行移植。完成上述添加,基本上就是添加了我们需要的纯rtt内核了,没有使用到rtt的组件。参考RT-Thread Studio IDE的工程,就能够发现,主要的移植工作就在libcpu目录中,主要为。再次编译,没有报错,稍留程序,LED灯点亮,串口输出正常,输出字符串“test”。原创 2023-02-11 15:22:28 · 1269 阅读 · 0 评论 -
rtl8188eus Linux驱动移植
编译驱动前,需要在内核中配置这个驱动依赖的模块,否则会在编译时报警告,一些符号未定义。在不配置相关依赖的情况下,编译好的驱动在装载时,会报和编译时一样的错误,导致装载失败。因为我开始设置了这个参数,在编译时,怎么都不生效,在Makefile中的最后面的位置加入这个参数才生效,后来就发现是被默认配置给覆盖了。注意这里需要修改Makefile中SRC变量配置,因为有默认配置,自己设置的参数会被覆盖不起作用,因此将Makefile中的都改成。并且这个仓库是带固件的,在使用无限网卡时,需要用到这个固件。原创 2023-01-06 00:50:45 · 3831 阅读 · 0 评论 -
buildroot构建hisi平台根文件系统和工具链
尝试使用buildroot编译内核,试了3.4到5.10的内核,5.0以下的内核可以编译通过,但是烧录后无法启动。最后还是使用buildroot生成的工具链编译Hi SDK中的内核。的工具链,我们还是选择外部工具链,从远程下载工具链并安装。编译过程一切顺利,除了有的包下载非常缓慢以后,没有再报任何的编译问题,这里做个记录。tips:最后测试发现,还是不使用hisi的编译工具链编译Buildroot根文件系统比较好。这样,编译过程都不报错,十分的顺利。的外部工具链进行编译,然后遇到了很多编译问题。原创 2023-01-02 23:23:16 · 716 阅读 · 0 评论 -
Buildroot编译hisi平台根文件系统
由于我使用的docker容器是ubuntu18,因此建议直接下载最新的Buildroot,因为使用老版本,可能会遇到更多的编译问题,最好是换个老点的系统。主要看两个地方,因为我使用buildroot2020.2版本编译,复制交叉编译工具链的mk执行会报错,由于解决不了,我在mk中忽略了该错误,最后会导致生成的根文件系统中缺少系统动态库,启动脚本缺少。使用buildroot构建imx6ull平台的根文件系统,参考整点原子的教程,过程十分顺利,换成hisi倒是遇到很多问题,这里做个记录。原创 2023-01-01 22:20:36 · 1057 阅读 · 0 评论 -
将一个文件夹下的.c文件打包成静态库
一个使用示例:文件夹内容:然后创建一个简单的makefile在当前目录下:INCLUDE = -I/usr/local/ssl/includesrc = $(wildcard *.c)obj = $(src:.c=.o)libgsoap.a:$(obj) ar -rc $@ $^ %.o:%.c gcc -c $(INCLUDE) $< -o $@.PHONY: cleanclean: rm *.o运行$ make...原创 2020-08-20 23:21:32 · 801 阅读 · 0 评论 -
解决静态库之间相互依赖的问题(对‘*‘未定义的引用)
解决两个静态库之间相互以来的问题两个静态库之间相互依赖:在静态库liba.a中声明了某些函数,但是实现在libb.a中,此时a库依赖于b库;然后在静态库中libb.a中,某些结构体或者变量在liba.a中声明的,此时b库依赖于a库。然后链接的时候,会出现两个库之间的相互依赖问题。链接涉及到顺序问题,当先链接a库时,会出现函数未定义的情况,先链接b库是,也一样。查了一下,可以交叉链接,比如:gcc -la -lb -la,大概是这样,但是经过我尝试任然不行(最后通过gcc -la -lb -la -l原创 2020-08-23 01:13:06 · 5929 阅读 · 0 评论 -
gcc减小生成程序的大小
编译参数CFLAGS: -O2 -ffunction-sections -fdata-sections (去掉-g参数,不启动调试)链接参数LDFLAGS: -Wl,-Map=object.map,--cref,--gc-section通过上述参数,会在编译和链接是对代码进行优化。把没有用到的函数全部裁剪掉,只保留有用的符号。原本25M的程序在-g参数后的,编程37M。去掉-g,然后加上上面的参数,变为8.1M,缩减了很大的空间。使用upx压缩可执行文件大小。...原创 2020-09-03 15:59:04 · 4293 阅读 · 0 评论 -
解决automake1.14编译问题
解决:Unescaped left brace in regex is illegal here in regex; marked by <-- HERE in m/\${ <-- HERE ([^ \t=将$text =~ s/\${([^ \t=:+{}]+)}/substitute_ac_subst_variables_worker ($1)/ge;修改为$text =~ s/\$[{]([^ \t=:+{}]+)}/substitute_ac_subst_variables_原创 2020-09-07 11:50:10 · 590 阅读 · 0 评论 -
解决 ‘aclocal-1.14‘ is missing on your system
在对应路径下执行:$ sudo autoreconf -ivf原创 2020-09-14 11:29:38 · 1695 阅读 · 0 评论 -
cmake 交叉编译
cmake交叉编译CMakeLists.txt#指定交叉编译器路径set(TOOLSCHAIN_PATH "/home/duapple/work/zigbee/z3_gateway/chiot_smart_home_zigbee/rtl819x/toolchain/msdk-4.4.7-mips-EL-3.10-u0.9.33-m32t-140827")set(TOOLCHAIN_HOST "${TOOLSCHAIN_PATH}/bin/mips-linux")set(TOOLCHAIN_CC原创 2021-07-02 10:51:55 · 1846 阅读 · 0 评论 -
ffmpeg程序交叉编译
对ffmpeg源码路径下doc/examples/remuxing.c进行交叉编译。cmake_minimum_required(VERSION 2.8)#指定交叉编译器路径set(TOOLSCHAIN_PATH "/opt/arm-2014.05")set(TOOLCHAIN_HOST "/opt/arm-2014.05/bin/arm-none-linux-gnueabi")set(TOOLCHAIN_CC "${TOOLCHAIN_HOST}-gcc")set(TOOLCHAIN_CX原创 2021-08-29 01:09:13 · 591 阅读 · 0 评论 -
Golang mips平台交叉编译
set_env = export CGO_ENABLED=1; export GOOS=linux; export GOMIPS=softfloat; export GOARCH=mipsleat_test: main.go $(set_env) ; go build -o $@ $<clean: @-rm -rf at_test原创 2021-11-03 16:50:23 · 2119 阅读 · 3 评论 -
makefile管理编译工程 2
前面 https://blog.csdn.net/duapple/article/details/108180638 通过Makefile工程,已经能够让我们很轻松的构建大型工程了。但是工程的结构会被我们设计的Makefile结构所限制。这里对前面的Makefile再进行修改,尽量减少Makefile的数量,让工程中的模块部分具备高耦合的特点,使我们的Makefile更加的通用,以便集成到其它工程中去。目录结构如下:mod目录为库的引入文件夹。其它目录和文件为原工程。因此原成功只有一个简单的Mak原创 2021-11-07 19:12:17 · 360 阅读 · 0 评论 -
OpenIPC编译报错问题解决
编译Hisi的OpenIPC遇到一些奇怪的问题。因为用的已经是很老的板子了,这个仓库也已经很就不维护了,并且上有个包已经找不到了,有些源文件的下载也会遇到一些问题。这里做个记录。原创 2022-09-22 02:16:42 · 1237 阅读 · 0 评论 -
Linux 编译安装 openssl库
Linux 编译安装 openssl库如果是不需要特定版本的openssl库的安装非常简单。直接sudo apt install opensll即可。而且像Ubuntu这种应该是自带了openssl库的。运行openssl version -a查看版本。当这个默认版本不满足我们的使用要求时,我们需要自己编译安装需要的版本。方法如下。1、下载openssl源码openssl官网链接:https://www.openssl.org/找到需要下载的版本:https://www.openssl.or原创 2020-07-02 23:38:28 · 18787 阅读 · 6 评论 -
解决编译错误:error: expected ‘=‘, ‘,‘, ‘;‘, ‘asm‘ or ‘__attribute__‘ before...
我在编译自己的工程时没有问题,但是把自己的工程和别人的工程合并后,编译出现上述问题。编译选项一个个检查,最后发现是在合并工程后,导入的openssl的头文件出问题了。我在自己工程中导入的时候自己交叉编译的1.0.0版本的openssl库和头文件,但是在合并工程的时候我是到系统include路径下去复制的openssl头文件。我之前自己编译安装openssl是没有经过交叉编译的。最终将交叉编译产生的头文件放到工程里面,替换原来的,问题得到解决。...原创 2020-07-08 11:26:58 · 3480 阅读 · 0 评论 -
Hisi平台交叉编译onvif错误解决
Hisi平台交叉编译onvif错误解决加入鉴权以后需要用到openssl库,openssl库也许要交叉编译:https://blog.csdn.net/duapple/article/details/107095657导入openssl动态库和头文件,解决缺少bio.h的错误,并解决未定义参数freelocale、newlocale。在编译链接参数中加入如下设置,路径来至于交叉编译的make intall路径。未设置的话默认是在/usr/local/ssl下。-I/home/river/Project原创 2020-07-06 21:49:54 · 637 阅读 · 0 评论