从源码构建gcc交叉编译环境

交叉编译openGL,Ubuntu20.04 to aarch64 (一) linux交叉编译openGL 阅读详情

       本文使用linaro公司制作的交叉编译gcc源代码进行安装,那种制作好的交叉编译工具链安装不是咱的追求,不在学习范围。
网上有很多安装说明都是针对现成的工具链安装,而且语焉不详,很多问题没有讲解清楚。使用源码编译安装,会加深对构建系
统的理解,窥探更为深入的部分,过程中会出现各种各样让人意想不到的,奇奇怪怪的没有遇到过的问题,甚至让人崩溃想放弃的问题。如果你淌过去了,你就进步了,学习计算机底层的技术,特别是这种开放源代码的嵌入式技术,更是这么一个过程,所以学习是充满曲折的,但同时也是有趣的,促使人进步的。
       arm-linux-gnueabihf-gcc是由 Linaro 公司基于GCC推出的的ARM交叉编译工具。可用于交叉编译ARM系统中所有环节的代码,包括裸机程序、u-boot、Linux kernel、filesystem和App应用程序。因手上有一块三星S5PV210的板子,选择了一个较为老一点的linaro-gcc源码进行编译,具体对应的源代码可到linaro公司的官网进行下载。下载地址:
https://www.linaro.org/downloads/
有用的参考网址:
https://elinux.org/images/1/15/Anatomy_of_Cross-Compilation_Toolchains.pdf
https://preshing.com/20141119/how-to-build-a-gcc-cross-compiler/
特别是后面这个链接,按照它的步聚,虽然有些小问题,几乎能完成编译,非常的不错,本文也按照它的步聚完成了编译,请注意先后顺序。国内的文章还是太少,也缺少相应的开发氛围,很多小伙伴们编译一次必定耗费几天精力。
另外这儿貌似有个对它的编译的,翻译的不太清楚,可以参考一下。
https://blog.youkuaiyun.com/fickyou/article/details/51671006

1.  编译源码和构建环境
1.1 linaro-gcc 源代码:
gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_linux.tar.xz 
这是一个源码包,在这个文章里的链接下载的
https://blog.youkuaiyun.com/kunkliu/article/details/79695829
选择源代码列表里面的
gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_src.tar.bz2
解压方法:
tar -zd gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_linux.tar.xz 
会出现.bz2后缀的文件,然后解压
tar -jxvf gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_linux.tar.bz2
里面包括编译需要的所有部件的包,有些包可能用不着:
binutils-linaro-2.24.0-2014.07-1          expat-2.1.0                       linux-3.1.1
binutils-linaro-2.24.0-2014.07-1.tar.bz2  expat-2.1.0.tar.gz                linux-3.1.1.tar
binutils.setup.sh                         gcc-linaro-4.9-2014.07            md5sum
build-binutils                            gcc-linaro-4.9-2014.07.tar        mpc-0.9
build-eglibc                              gcc-setup.sh                      mpc-0.9.tar.gz
build-linaro-gcc                          gdb-linaro-7.6.1-2013.10          mpfr-3.1.0
build-scripts                             gdb-linaro-7.6.1-2013.10.tar.bz2  mpfr-3.1.0.tar
cloog-0.18.0                              gmp-5.0.2                         pkg-config-0.25
cloog-0.18.0.tar.gz                       gmp-5.0.2.tar.bz2                 pkg-config-0.25.tar.gz
compile-eglibc-setup.sh                   isl-0.11.1                        
eglibc-linaro-2.19-2014.07                isl-0.11.1.tar.bz2                zlib-1.2.5
eglibc-linaro-2.19-2014.07.tar.bz2        zlib-1.2.5.tar.gz
1.2 编译主机(cent os 64)
cat /proc/version 显示如下
Linux version 3.10.0-957.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) 
1.3 安装目录:/usr/local/arm-linux
将路径/usr/local/arm-linux/bin 加入path中,否则后期出现各种ld找不到文件,明明文件就在那里,这是关键的一步,切勿忽略。
vi /etc/profile
最后加入
export PATH=/usr/local/arm-linux/bin:$PATH
source /etc/profile

2. 先安装几个必段库:
2.1 首先编译gmp
cd gmp-5.0.2
./configure --prefix=/usr/local/gmp-5.0.2
make 
make install
2.2 编译mpfr,依懒gmp
cd mpfr-3.1.0
./configure --prefix=/usr/local/mpfr-3.1.0 --with-gmp=/usr/local/gmp-5.0.2
make 
make install
2.3 编译mpc,依懒gmp,mpfr

2.4 编译isl,依懒gmp
./configure --prefix=/usr/local/isl-0.11.1 --with-gmp=/usr/local/gmp-5.0.2
make 
make install
2.5 编译cloog,依懒gmp.
./configure --prefix=/usr/local/cloog-0.18.0 --with-gmp=/usr/local/gmp-5.0.2
make 
make install
3. 编译binutils,用的是主机的gcc编译工具。
注意,为了避免一些未知的错误,新建一个目录单独编译:
mkdir build-binutils
假设build-binutils与binutils-linaro-2.24.0-2014.07-1源码目录同级
cd build-binutils,编写一个脚本,配置脚本setup.sh如下:
#!/bin/sh
../binutils-linaro-2.24.0-2014.07-1/configure --prefix=/usr/local/arm-linux \
--build=$MACHTYPE \
--target=arm-linux-gnueabihf    \
--enable-shared --disable-multilib

$MACHTYPE不能写成$(MACHTYPE)

chmod 777 setup.sh
./setup.sh
make 
make install

编译完成后有安装目录这几个目录:
/usr/local/arm-linux/
/usr/local/arm-linux/arm-linux-gnueabihf 
/usr/local/arm-linux/bin
/usr/local/arm-linux/share
>>arm-linux-gnueabihf:这是目标目录,这个设置为sysroot系统目录,目录下有bin和ib。
bin下有这几个文件:ar  as  ld  ld.bfd  ld.gold  nm  objcopy  objdump  ranlib  strip
/usr/local/arm-linux/arm-linux-gnueabihf/bin/ar  
/usr/local/arm-linux/arm-linux-gnueabihf/bin/as  
/usr/local/arm-linux/arm-linux-gnueabihf/bin/ld  
/usr/local/arm-linux/arm-linux-gnueabihf/bin/ld.bfd
/usr/local/arm-linux/arm-linux-gnueabihf/bin/ld.gold  
/usr/local/arm-linux/arm-linux-gnueabihf/bin/nm  
/usr/local/arm-linux/arm-linux-gnueabihf/bin/objcopy  
/usr/local/arm-linux/arm-linux-gnueabihf/bin/objdump  
/usr/local/arm-linux/arm-linux-gnueabihf/bin/ranlib  
/usr/local/arm-linux/arm-linux-gnueabihf/bin/strip
lib下面有这个目录:ldscripts,其下又有一推的文件。
/usr/local/arm-linux/arm-linux-gnueabihf/lib/ldscripts
>>bin下面,有一堆的交叉编译工具(18个文件):
arm-linux-gnueabihf-addr2line  arm-linux-gnueabihf-c++filt  arm-linux-gnueabihf-gprof   arm-linux-gnueabihf-ld.gold  arm-linux-gnueabihf-objdump  arm-linux-gnueabihf-size
arm-linux-gnueabihf-ar         arm-linux-gnueabihf-dwp      arm-linux-gnueabihf-ld      arm-linux-gnueabihf-nm       arm-linux-gnueabihf-ranlib   arm-linux-gnueabihf-strings
arm-linux-gnueabihf-as         arm-linux-gnueabihf-elfedit  arm-linux-gnueabihf-ld.bfd  arm-linux-gnueabihf-objcopy  arm-linux-gnueabihf-readelf  arm-linux-gnueabihf-strip
path:/usr/local/arm-linux/bin
这是用来编译新系统的工具。
>> share
一些帮助文档

4. 第一次编译gcc,注意gcc要分三步编译,这一步是生成c,c++交叉编译工具。
同样单独建一个目录编译
mkdir build-gcc 
假设build-gcc与gcc源码gcc-linaro-4.9-2014.07同级目录
cd build-gcc,编译脚本setup.sh如下
#!/bin/sh
../gcc-linaro-4.9-2014.07/configure --prefix=/usr/local/arm-linux \
--build=$MACHTYPE --target=arm-linux-gnueabihf --with-gmp=/usr/local/gmp-5.0.2 \
--with-mpfr=/usr/local/mpfr-3.1.0 --with-mpc=/usr/local/mpc-0.9 --with-isl=/usr/local/isl-0.11.1 \
--with-cloog=/usr/local/cloog-0.18.0 --disable-multilib \
--enable-languages=c,c++ --with-float=hard  

注意,这里其实是c,c++都是可以选的,有些文章说不能选c++,而且列了一大堆配置项,经实践,这样简单配置,c++也可以选择。
chmod 777 setup.sh
./setup.sh
$ make -j4 all-gcc
$ make install-gcc
注意以上操作,只编译安装gcc部分,否则不通过。

所以编译eglibc之前,一定要先执行第一步编译gcc,使用的是本机的gcc工具编译.

编译完成后,这个目录下多了这几个目录
include  lib  libexec
>> include:空目录
>> lib:目录结构如下:
lib/gcc
lib/gcc/arm-linux-gnueabihf
lib/gcc/arm-linux-gnueabihf/4.9.1
lib/gcc/arm-linux-gnueabihf/4.9.1/crtbegin.o
lib/gcc/arm-linux-gnueabihf/4.9.1/crtbeginS.o
lib/gcc/arm-linux-gnueabihf/4.9.1/crtbeginT.o  
lib/gcc/arm-linux-gnueabihf/4.9.1/crtend.o
lib/gcc/arm-linux-gnueabihf/4.9.1/crtendS.o
lib/gcc/arm-linux-gnueabihf/4.9.1/include
lib/gcc/arm-linux-gnueabihf/4.9.1/include-fixed
lib/gcc/arm-linux-gnueabihf/4.9.1/install-tools
lib/gcc/arm-linux-gnueabihf/4.9.1/libgcc.a
lib/gcc/arm-linux-gnueabihf/4.9.1/libgcov.a
lib/gcc/arm-linux-gnueabihf/4.9.1/plugin
>>libexec
/usr/local/arm-linux/libexec
/usr/local/arm-linux/libexec/gcc
/usr/local/arm-linux/libexec/gcc/arm-linux-gnueabihf
/usr/local/arm-linux/libexec/gcc/arm-linux-gnueabihf/4.9.1
/usr/local/arm-linux/libexec/gcc/arm-linux-gnueabihf/4.9.1/cc1
/usr/local/arm-linux/libexec/gcc/arm-linux-gnueabihf/4.9.1/collect2
/usr/local/arm-linux/libexec/gcc/arm-linux-gnueabihf/4.9.1/install-tools  
/usr/local/arm-linux/libexec/gcc/arm-linux-gnueabihf/4.9.1/liblto_plugin.la  
/usr/local/arm-linux/libexec/gcc/arm-linux-gnueabihf/4.9.1/liblto_plugin.so  
/usr/local/arm-linux/libexec/gcc/arm-linux-gnueabihf/4.9.1/liblto_plugin.so.0  
/usr/local/arm-linux/libexec/gcc/arm-linux-gnueabihf/4.9.1/liblto_plugin.so.0.0.0  
/usr/local/arm-linux/libexec/gcc/arm-linux-gnueabihf/4.9.1/lto1  
/usr/local/arm-linux/libexec/gcc/arm-linux-gnueabihf/4.9.1/lto-wrapper  
/usr/local/arm-linux/libexec/gcc/arm-linux-gnueabihf/4.9.1/plugin

>>同时
/usr/local/arm-linux/bin目示下多出来几个东西
/usr/local/arm-linux/bin/
共有如下文件
arm-linux-gnueabihf-addr2line  arm-linux-gnueabihf-cpp      arm-linux-gnueabihf-gcc-4.9.1   arm-linux-gnueabihf-gcov    arm-linux-gnueabihf-ld.gold  arm-linux-gnueabihf-ranlib   arm-linux-gnueabihf-strip
arm-linux-gnueabihf-ar         arm-linux-gnueabihf-dwp      arm-linux-gnueabihf-gcc-ar      arm-linux-gnueabihf-gprof   arm-linux-gnueabihf-nm       arm-linux-gnueabihf-readelf
arm-linux-gnueabihf-as         arm-linux-gnueabihf-elfedit  arm-linux-gnueabihf-gcc-nm      arm-linux-gnueabihf-ld      arm-linux-gnueabihf-objcopy  arm-linux-gnueabihf-size
arm-linux-gnueabihf-c++filt    arm-linux-gnueabihf-gcc      arm-linux-gnueabihf-gcc-ranlib  arm-linux-gnueabihf-ld.bfd  arm-linux-gnueabihf-objdump  arm-linux-gnueabihf-strings
和只编译binutils相比,25个文件,多出7个文件,分别是
arm-linux-gnueabihf-gcc-4.9.1
arm-linux-gnueabihf-cpp
arm-linux-gnueabihf-gcc-ar
arm-linux-gnueabihf-gcc-nm
arm-linux-gnueabihf-gcc-ranlib
arm-linux-gnueabihf-gcov
arm-linux-gnueabihf-gcc

5. 编译内核头,编译eglibc需要用到内核头,进入内核源代码目录,执行以下命令
cd linux-3.1.1
make ARCH=arm headers_check
make ARCH=arm INSTALL_HDR_PATH=/usr/local/arm-linux/arm-linux-gnueabihf headers_install

6. 第一次编译eglibc库,编译安装c库标准头文件和启动文件
同样,这一步新建一个目录编译安装,注意配置项build与host.
mkdir build-eglibc
假设build-eglibc与eglibc源码同级目录
cd build-eglibc,编译安装脚本setup.sh如下
#!/bin/sh
../eglibc-linaro-2.19-2014.07/configure \
--prefix=/usr/local/arm-linux/arm-linux-gnueabihf \
--build=$(MACHTYPE) \
--host=arm-linux-gnueabihf \
--target=arm-linux-gnueabihf \
--with-headers=/usr/local/arm-linux/arm-linux-gnueabihf/include \
libc_cv_forced_unwind=yes
注意,这里要指定内核头文件,即5步编译安装的内核头文件。
./setup.sh
执行安装脚本后,执行命令:
make install-bootstrap-headers=yes install-headers
make -j4 csu/subdir_lib
install csu/crt1.o csu/crti.o csu/crtn.o /usr/local/arm-linux/arm-linux-gnueabihf/lib
arm-linux-gnueabihf-gcc -nostdlib -nostartfiles -shared -x c /dev/null -o /usr/local/arm-linux/arm-linux-gnueabihf/lib/libc.so
touch /usr/local/arm-linux/arm-linux-gnueabihf/include/gnu/stubs.h

这里,创建了两个虚拟文件libc.so 和 stubs.h,也是第7步编译的需要,否则出找不到libc.so之类的错误,实则在第7步他们会被替换掉。

7. 第二次编译gcc生成编译eglibc所需要的编译器支持库,这一步使用的编译工具是使用第4步编译出来的,这一步会生成第8步编译所需要的库. 
cd build-gcc
make -j4 all-target-libgcc
make install-target-libgcc

8. 第二次编译eglibc库,生成c语言标准库
cd build-eglibc
make -j4
make install

9. 第三次编译gcc,生成c++语言标准
cd build-gcc
make -j4
make install

这一次,有可能会出现如下错误:
fatal error: sys/sdt.h: No such file or directory
在我的代码里面,出错位置如下:
gcc-linaro-4.9-2014.07/libstdc++-v3/libsupc++/unwind-cxx.h:41:21: fatal error: sys/sdt.h: No such file or directory
找了许久没有找到优雅的解决办法,最后我的解决办法为:
在主机查sdt.h这个文件,发现在位置:/usr/include/sys/sdt.h
打开unwind-cxx.h这个文件,其内容有如下一句:
#include <sys/sdt.h>
为了编译,将其改为绝对路径
#include</usr/include/sys/sdt.h>

再将编译,这一次编译成功并安装。

经过以上9步的操作,生成的交叉编译器,编译生成的程序在s5pv210的开发板上测试过通过。

10. 编译可能会遇到的错误,大多与编译参数设置不当造成的,错误可能千奇百性,很是让人崩溃。下面是一些遇到的错误及原因:
>> 编译eglibc库时,一定要另建一个文件夹来编译安装,也要先编译内核头,不然出现如下类似错误:
configure: WARNING: using cross tools not prefixed with host triplet
../sysdeps/unix/sysv/linux/recv.S:5:20: fatal error: socket.S: No such file or directory
 #include <socket.S>
>> 编译顺序不当造成的错误:
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... configure: error: Link tests are not allowed after GCC_NO_EXECUTABLES.
make[1]: *** [configure-zlib] Error 1
>> 修改配置脚本后引起的错误,清空构建目录重新执行配置脚本
configure: error: `target_alias' has changed since the previous run:
configure: former value: i686-pc-linux-gnu
configure: current value: i386-rtems
configure: error: changes in the environment can compromise the build
configure: error: run `make distclean' and/or `rm ./config.cache' and start over
>> 配置主机和构建项不当造成的错误:
configure: error: cannot compute suffix of object files: cannot compile
注意build,host,target项的设置。


  

在Ubuntu16.04下从源码编译交叉编译工具链arm-linux-gcc Linux系统:Ubuntu 18.04.1 LTS amd64 编译平台:Ubuntu 14.04.4 LTS crosstool-ng-1.23.0 一、 下载安装crosstool-ng 1、 从crosstool-ng官网或github上下载最新版本。 wget http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.23.... 阅读详情

相关推荐

交叉编译GCC for arm

之前被同学问了一个开发版上编译程序的问题,对这方面不是很熟悉,回去之后又重新查了挺久,总之这是个如何用gcc编译交叉工具链的问题. 一般官方会提供好可以使用的整套编译工具链,但是如果需要编译交叉编译用的gcc,需要知道三个概念: Build Platform: This is the platform on which the compilation tools are executed

seijia的博客 6739

ARM平台交叉编译jshon

其中/home/kobe/gcc/arm/gcc-x86_64_arm-xxxx-gnueabihf/bin/是交叉编译工具目录,具体路径根据自己实际情况设置。因为交叉编译,因此需要把工具链的安装路径添加到$PATH中,这样保证编译工具能被找到。编译jshon,需要提前编一个jansson库,他是jshon依赖的。如果上面你基本都试过了,那么你很快也就编译出来了。jshon的二进制文件就是最终编译结果。先总结一下,编译时候遇到的问题。还有类是下面的命令都是错误的。

mudawei1的博客 1860

cross compiler Toolchain 交叉编译工具链 的建立

cross compiler Toolchain 交叉编译工具链 的建立

skdhfdfc的博客 1909

arm-linux-gcc交叉工具链

Linux ARM交叉编译工具链制作过程 一、下载源文件 源代码文件及其版本与下载地址: Binutils-2.19.tar.bz2 Index of /gnu/binutils gcc-4.4.4.tar.bz2 Index of /gnu/gcc/gcc-4.4.4/ Glibc-2.11.2.tar.bz2 Glibc-ports-2.11.tar.bz2 http://ftp.gnu.org/gnu/glibc/ Gmp-4.2.tar.bz2 http://ftp.gnu.o

生活需要深度 2577

GCC 14.2.0 源码编译实战:从依赖解析到交叉编译全指南

编译器是软件开发的基石,它将高级语言代码转换为机器可执行的指令。其核心原理涉及词法分析、语法分析、语义分析、优化和代码生成等多个阶段。GCC(GNU Compiler Collection)作为一款开源的、支持多语言和多平台的经典编译器套件,其技术价值在于提供了高度的可定制性和对新兴硬件架构的快速适配能力,是进行系统级开发、性能优化和嵌入式交叉编译的关键工具。在实际的工程实践中,开发者常需从源码手动编译GCC,以满足特定的定制化需求或构建交叉编译工具链。例如,针对ARM或RISC-V等嵌入式平台进行开发时,

weixin_34195364的博客 317

从源码构建GCC 10.1.0:完整指南与依赖管理详解

在Linux开发环境中,编译器是软件构建的核心工具,GCC作为最广泛使用的开源编译器集合,其源码构建过程涉及复杂的依赖管理和配置原理。理解构建过程需要掌握基本的编译工具链概念,如make、gcc等构建工具的作用,以及关键依赖库如GMP、MPFR、MPC对编译器优化功能的技术支撑。从工程实践角度,源码构建的价值在于实现特定版本需求、定制化编译选项以及深入理解编译器内部机制,尤其适用于嵌入式开发、系统底层优化等场景。本文以gcc-10.1.0.tar.gz为例,详细解析从依赖安装、配置选项到编译安装的全流程,并

weixin_28832121的博客 262

制作交叉编译工具链

本文介绍了构建交叉编译工具链的详细步骤,包括环境准备、源码下载和构建过程。主要内容:1. 解释交叉编译工具链的基本概念和关键术语;2. 提供依赖安装和环境配置方法;3. 详细说明如何从国内镜像源下载核心组件;4. 分步讲解构建过程,包括Binutils、Linux内核头文件、GCC第一阶段和glibc的构建配置。教程特别针对国内用户优化,提供了镜像源配置方案,帮助开发者高效完成工具链构建。

qq_46518045的博客 721

从源码编译GCC 10.1.0:定制化构建与深度环境配置指南

编译器是软件开发的核心工具,负责将高级语言代码转换为机器可执行的指令。其工作原理涉及词法分析、语法分析、优化和代码生成等多个阶段,是现代软件工程基础设施的基石。从源码构建编译器不仅能获得特定版本支持(如C++20新特性),还能实现针对特定CPU架构(如ARM、RISC-V)的交叉编译定制,这对于嵌入式开发、高性能计算和系统级编程具有重要技术价值。在实际应用场景中,开发者常需为服务器部署特定版本环境或为嵌入式设备构建专用工具链。本文以GCC 10.1.0为例,详细解析从源码包到可执行编译器的完整构建过程,涵盖

weixin_33603377的博客 361

基于 gcc 4.8.5 制作 aarch64交叉编译工具链

本文详细介绍了交叉编译工具链的构建过程,主要包括gcc、binutils和glibc三大组件的编译。首先确定目标系统版本(KyinSec3.3),获取对应版本的源码包。然后分步骤编译:先编译binutils,再分阶段编译gcc和glibc,包括最小gcc、glibc头文件、target-libgcc和完整glibc,最后编译完整gcc。文章特别强调了编译顺序的重要性,并提供了详细的配置参数和环境变量设置,以及处理编译过程中可能遇到的问题的方法。整个过程需要严格遵循编译顺序,确保各组件版本兼容性,最终生成可直

t1007606713的博客 702

从源码编译安装GCC 14.2.0:环境配置、编译步骤与版本管理全攻略

GCC(GNU编译器集合)是支持C、C++、Fortran等多种语言的基石工具链,其工作原理是将高级语言源代码转换为目标机器代码。理解其编译原理对于系统级开发、性能优化和跨平台构建具有重要价值,尤其在嵌入式开发、高性能计算和定制化工具链场景中不可或缺。本文聚焦于从源码包(如gcc-14.2.0.tar.gz)到可执行编译器的完整构建过程,涵盖环境准备、依赖库(如GMP、MPFR、MPC)解析、配置参数定制、并行编译优化以及安装后的系统集成。针对常见问题如“gcc升级后为啥还是旧版本”,文章深入探讨了PATH

weixin_34235457的博客 421

gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_windows.zip

gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_windows windows用

【教程】制作能在ARM板上直接运行的gcc本地编译器

编译好的程序的下载链接:百度网盘 请输入提取码(提取码:ocmm) 概述 通常情况下,我们是在电脑里面开一个Linux虚拟机, 在虚拟机里面用交叉编译工具链编译好可执行文件后,将可执行文件拷贝到板子里面运行。也就是说,我们是用电脑上运行的gcc编译ARM板子上运行的程序,即交叉编译。 对于用automake制作的软件包来说,有时候交叉编译会非常麻烦。Linux系统下绝大部分软件包都是automake制作的。交叉编译小型的软件,如make、file、mlocate这种还比较简单。但是如果是apache、

ZLK1214的专栏 1万+

零代码构建AI智能体:COZE可视化工作流实战指南

AI智能体(AI Agent)是当前人工智能领域的重要发展方向,它通过模块化设计和工作流驱动,使大语言模型从被动对话转向主动执行。其核心原理在于将复杂的任务分解为可规划、可执行的步骤,并调用外部工具(插件)完成闭环。这一技术价值在于显著降低了自动化流程的开发门槛,让非程序员也能构建实用的数字助手。典型的应用场景包括智能客服、内容自动生成、数据分析和跨系统业务流程自动化。本文以COZE平台为例,深入解析如何通过其直观的可视化界面和丰富的插件生态,像搭积木一样快速搭建如“早安简报生成器”等实用智能体,并分享指令

469

手把手教你构建GCC交叉编译器,RISC-V嵌入式开发从此不再难!

掌握C语言RISC-V编译工具链构建方法,轻松开启嵌入式开发。本文手把手教你打造GCC交叉编译器,适用于RISC-V架构移植与裸机程序开发,无需依赖第三方工具链。编译自动化、环境配置清晰,大幅降低入门门槛,值得收藏。

QuickProceed的博客 1024

光栅衍射有入射角时_偏振光栅的衍射角度及衍射效率测量

偏振光栅是一种基于入射光的偏振态实现选择性分光的衍射光学元件,衍射角度取决于光栅线数。通过控制入射光的偏振态,偏振光栅能够调控正一阶和负一阶之间的能量分布。当入射光束偏振态不同时,偏振光栅具有不同的衍射特性。理想的偏振光栅:当入射光为右旋圆偏振光时,只有+1级衍射光,衍射光为左旋圆偏振光。当入射光为左旋圆偏振光时,只有-1级衍射光,衍射光为右旋圆偏振光。当入射光为非圆偏振光时,偏振光栅同...

weixin_39552768的博客 6005

ROS2 -Jazzy 一步一步(第一步_工作空间以及编译)

文件夹作用特点是否需要手动创建/维护src存放自己写的 ROS 2 包一个 workspace 可以有多个包需要手动创建build保存编译过程中的中间文件每个包生成对应子目录自动生成,可删除install保存编译完成后的功能包每个包有独立子目录,含可执行文件自动生成,可删除log保存编译日志用于查看错误原因、调试自动生成,不需修改colcon是 ROS 2 推荐使用的构建工具自动处理功能包的依赖和编译顺序一条命令就能编译整个工作空间。

jerrykorea的博客 1380

[Linux][C/C++]在CentOS6.5上构建高版本gcc和glibc的交叉编译环境

本文介绍如何在CentOS6.5(或RHEL6.5)上基于源码包构建高版本gcc和glibc,搭建交叉编译环境;并举例说明基于这个交叉编译环境,编译GNU tool chain工程以及CMake工程的方法。最后再简要介绍一下,如何使用交叉编译环境中的gdb进行调试。 ...

modisir的博客 1674

2025年ZBrush雕刻实战:从基础到高级技巧全解析

本文全面解析2025年ZBrush雕刻实战技巧,从基础界面操作到高级笔刷应用。详细介绍了核心功能区域如工具面板和灯箱,以及推荐材质选择。重点讲解6个实用笔刷技巧,包括Standard、Move和ClayBuildup等,帮助用户从入门到精通掌握ZBrush雕刻技术。

weixin_29300241的博客 363

谈谈嵌入式中的GCC

谈谈嵌入式中的GCC 导读:   在嵌入式环境中,如何理解Gcc是怎么工作的?你是否知道在工具链目录下的其他工具的用途?还有没有让你更好适应这些工具的诀窍和秘笈?OK,读读这篇linuxjournal上的文章吧,主要是讲如何构建Gcc交叉编译器,探讨了Gcc编译的过程,并共享了一些有效的技巧。我觉得讲得非常棒,就拿出来翻译到这里。请注意,我不是完全忠于原文翻译,而是可能加入一些自己以前交叉

~ 飞 扬 的 天 空 ~ 1000

手把手教你用FPGA解析AD9680的JESD204B数据流(附Verilog代码)

本文详细介绍了如何利用FPGA解析AD9680的JESD204B数据流,包括协议核心机制、硬件平台搭建、Verilog代码实现及调试技巧。通过实战案例和代码示例,帮助工程师快速掌握高速ADC数据采集与处理技术,提升系统性能。

weixin_33640562的博客 373

VMware17安装教程(附安装包)VMware17小白详细一键安装教程

VMware 17.5 是一款强大的虚拟机软件。本安装教程将为您详细介绍VMware17安装教程其下载、安装步骤及验证方法,助您轻松完成安装,开启虚拟化体验。

2501_91538706的博客 2万+

linux安装ARM交叉编译环境,一套完整的ARM交叉编译环境的搭建过程

在网上查看了不少资料,参考别人的,在加上一些自己遇到的问题结合的,内容直接转载过来了,给和我一样,刚入门ARM的新手的。虽然网上很多现成的,但是自己动手做作,还是很好的。编译环境:内核名称:Linux内核发行版: 3.3.0-4.fc16.x86_64内核版本:#1 SMP Tue Mar 20 18:05:40 UTC 2012硬件架构名称: x86_64硬件平台:x86_64操作系统:GNU/...

weixin_35617554的博客 1882

机器人多学科仿真软件:Webots_(19).Webots的插件与扩展开发

通过上述步骤,您可以开发和使用Webots的插件、扩展和接口,以增强其功能和灵活性。

kkchenjj的博客 925

arm_linux交叉编译开发环境建立之 - gcc 4.8.2

仪器编译环境构建 1 arm linux gcc 4.8.2 交叉编译器构建 1.1 环境 linux 16.04 1.2 所需源文件  binutils-2.23.1.tar.bz2  glibc-2.18.tar.gz  gcc-4.8.2.tar.bz2  gmp-5.1.3.tar.bz2  mpfr-3.1.2.tar.bz2  mpc-1.0.1.tar.gz  linu...

cs_sword2000的博客 2576

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

从源码编译 GCC:构建一个独立的(Freestanding)交叉编译器

本文详细介绍了如何从源码编译一个针对ARM Cortex-M架构的Freestanding交叉编译器,主要包含以下步骤: 环境准备:需要Linux系统、10-15GB磁盘空间及基础开发工具(gcc、make等),推荐通过系统包管理器安装数学库依赖(GMP、MPFR、MPC)。 源码下载:获取Binutils、GCC和可选Newlib的源码包,建议使用最新稳定版本。 编译安装: 首先编译Binutils(包含汇编器、链接器等工具) 然后配置并编译GCC,关键配置包括: 指定目标架构为arm-none-eabi

MENGSONGSHAN的博客 312

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

上一篇: 多目录Makefile编写
下一篇: Linux移植遇到的一些问题及解决方法(arm开发板)
ComputerInBook
博客等级 码龄19年 1168粉丝 464原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值