-
定位思路1、使用top命令查看相关进程仍在运行,确认是进程卡死。2、重新编译可调试版本,运行新版本,复现问题,GDB调试新版本。3、分析堆栈信息及业务逻辑,找出卡死原因。4、修改代码,重新编译进行验证。 1)若问题解决,则确认修改,合入原代码。 2)若问题未解决,增加定位信息,重新编译运行。案例 问题现象: 某软件在服务器上运行出现卡死问题。定位过程: 1、使用top命令查看进程仍存在,确认是卡死问题。2、重新编译该程序为可调试版本,重新运行,复现问题,查询该进程PID号。3、进入到程序的调测模式。gdb attach 2573说明:2573为该程序PID号。4、开启日志,将堆栈信息导出到文件。set logging file core_info.log set logging on thread apply all bt5、查看线程状态。info threads绝大部分线程都处在等待状态__lll_lock_wait。其中,等待的锁变量主要有两个,resource1和resource2。6、通过print命令查看,两个锁变量的信息。其中__owner表示当前该锁的持有者线程ID。可见,resource1由线程3889持有未释放,resource2由线程3892持有未释放。7、从上述收集的日志文件中找到ID为3889和3892的线程日志。从这两个线程的状态信息可以看出,3889号线程持有了锁resource1,但是本身在请求resource2;而3892号线程持有了锁resource2,但是本身在请求resource1。这两个线程的锁调用关系构成了死锁条件导致无法退出,同时,其他所有依赖这两个锁的线程都陷入了等待状态。8、根据上述堆栈信息,是threadOne和threadTwo直接相互调用导致死锁,查看业务代码逻辑,修改代码,重新编译,运行,问题未复现,确认修改代码合入,验证问题解决。
-
您好:【AICC版本信息】 AICC版本信息:AICC 22.100【问题场景及现象】参照老版本IPCC场景OCX开发方式,在AICC 22.100文档和软件包未发现有ocx控件和文档,请问此版本还支持ocx开发吗
-
如题,c语言不能使用math.h库啥时候修复
-
1.8号类型和9号类型工作站的工作周期指的是消耗原材料所需要的时间吗?还有在某一帧下9号类型的工作台可以接受同一个类型的若干个原料吗?比如说同时在某一帧下同时收购两个原料1。还是说9号类型每一帧只能接受某个特定类型的一个原料,需要等待下一帧,将该原料消耗后才可以继续收购该类型的下一个原料。2.工作台的id是按照输入格式中依次输入的K行工作台信息从0开始递增编号吗?或者说是在地图初始化时的按行依次的读入顺序吗?3.机器人与两个工作台的距离相同时的判定选择。这里的以排在前面的工作台的顺序为准是指的什么顺序?是指工作台的id顺序吗?
-
简介一个软件项目往往包含多个源码文件,编译时需要将这些文件一起编译,生成一个可执行文件。假定一个项目有两个源码文件foo.c和bar.c,其中foo.c是主文件,bar.c是库文件。所谓“主文件”,就是包含了main()函数的项目入口文件,里面会引用库文件定义的各种函数。// File foo.c #include <stdio.h> int main(void) { printf("Ù89c2b62-7941-4ec4-b01c-2882396c4547n", add(2, 3)); // 5! }上面代码中,主文件foo.c调用了函数add(),这个函数是在库文件bar.c里面定义的。// File bar.c int add(int x, int y) { return x + y; }现在,将这两个文件一起编译。$ gcc -o foo foo.c bar.c # 更省事的写法 $ gcc -o foo *.c上面命令中,gcc 的-o参数指定生成的二进制可执行文件的文件名,本例是foo。这个命令运行后,编译器会发出警告,原因是在编译foo.c的过程中,编译器发现一个不认识的函数add(),foo.c里面没有这个函数的原型或者定义。因此,最好修改一下foo.c,在文件头部加入add()的原型。// File foo.c #include <stdio.h> int add(int, int); int main(void) { printf("Ù89c2b62-7941-4ec4-b01c-2882396c4547n", add(2, 3)); // 5! }现在再编译就没有警告了。你可能马上就会想到,如果有多个文件都使用这个函数add(),那么每个文件都需要加入函数原型。一旦需要修改函数add()(比如改变参数的数量),就会非常麻烦,需要每个文件逐一改动。所以,通常的做法是新建一个专门的头文件bar.h,放置所有在bar.c里面定义的函数的原型。// File bar.h int add(int, int);然后使用include命令,在用到这个函数的源码文件里面加载这个头文件bar.h。// File foo.c #include <stdio.h> #include "bar.h" int main(void) { printf("Ù89c2b62-7941-4ec4-b01c-2882396c4547n", add(2, 3)); // 5! }上面代码中,#include "bar.h"表示加入头文件bar.h。这个文件没有放在尖括号里面,表示它是用户提供的;它没有写路径,就表示与当前源码文件在同一个目录。然后,最好在bar.c里面也加载这个头文件,这样可以让编译器验证,函数原型与函数定义是否一致。// File bar.c #include "bar.h" int add(int a, int b) { return a + b; }现在重新编译,就可以顺利得到二进制可执行文件。$ gcc -o foo foo.c bar.c重复加载头文件里面还可以加载其他头文件,因此有可能产生重复加载。比如,a.h和b.h都加载了c.h,然后foo.c同时加载了a.h和b.h,这意味着foo.c会编译两次c.h。最好避免这种重复加载,虽然多次定义同一个函数原型并不会报错,但是有些语句重复使用会报错,比如多次重复定义同一个 Struct 数据结构。解决重复加载的常见方法是,在头文件里面设置一个专门的宏,加载时一旦发现这个宏存在,就不再继续加载当前文件了。// File bar.h #ifndef BAR_H #define BAR_H int add(int, int); #endif上面示例中,头文件bar.h使用#ifndef和#endif设置了一个条件判断。每当加载这个头文件时,就会执行这个判断,查看有没有设置过宏BAR_H。如果设置过了,表明这个头文件已经加载过了,就不再重复加载了,反之就先设置一下这个宏,然后加载函数原型。extern 说明符当前文件还可以使用其他文件定义的变量,这时要使用extern说明符,在当前文件中声明,这个变量是其他文件定义的。extern int myVar;上面示例中,extern说明符告诉编译器,变量myvar是其他脚本文件声明的,不需要在这里为它分配内存空间。由于不需要分配内存空间,所以extern声明数组时,不需要给出数组长度。extern int a[];这种共享变量的声明,可以直接写在源码文件里面,也可以放在头文件中,通过#include指令加载。static 说明符正常情况下,当前文件内部的全局变量,可以被其他文件使用。有时候,不希望发生这种情况,而是希望某个变量只局限在当前文件内部使用,不要被其他文件引用。这时可以在声明变量的时候,使用static关键字,使得该变量变成当前文件的私有变量。static int foo = 3;上面示例中,变量foo只能在当前文件里面使用,其他文件不能引用。编译策略多个源码文件的项目,编译时需要所有文件一起编译。哪怕只是修改了一行,也需要从头编译,非常耗费时间。为了节省时间,通常的做法是将编译拆分成两个步骤。第一步,使用 GCC 的-c参数,将每个源码文件单独编译为对象文件(object file)。第二步,将所有对象文件链接在一起,合并生成一个二进制可执行文件。$ gcc -c foo.c # 生成 foo.o $ gcc -c bar.c # 生成 bar.o # 更省事的写法 $ gcc -c *.c上面命令为源码文件foo.c和bar.c,分别生成对象文件foo.o和bar.o。对象文件不是可执行文件,只是编译过程中的一个阶段性产物,文件名与源码文件相同,但是后缀名变成了.o。得到所有的对象文件以后,再次使用gcc命令,将它们通过链接,合并生成一个可执行文件。$ gcc -o foo foo.o bar.o # 更省事的写法 $ gcc -o foo *.o以后,修改了哪一个源文件,就将这个文件重新编译成对象文件,其他文件不用重新编译,可以继续使用原来的对象文件,最后再将所有对象文件重新链接一次就可以了。由于链接的耗时大大短于编译,这样做就节省了大量时间。make 命令大型项目的编译,如果全部手动完成,是非常麻烦的,容易出错。一般会使用专门的自动化编译工具,比如 make。make 是一个命令行工具,使用时会自动在当前目录下搜索配置文件 makefile(也可以写成 Makefile)。该文件定义了所有的编译规则,每个编译规则对应一个编译产物。为了得到这个编译产物,它需要知道两件事。依赖项(生成该编译产物,需要用到哪些文件)生成命令(生成该编译产物的命令)比如,对象文件foo.o是一个编译产物,它的依赖项是foo.c,生成命令是gcc -c foo.c。对应的编译规则如下:foo.o: foo.c gcc -c foo.c上面示例中,编译规则由两行组成。第一行首先是编译产物,冒号后面是它的依赖项,第二行则是生成命令。注意,第二行的缩进必须使用 Tab 键,如果使用空格键会报错。完整的配置文件 makefile 由多个编译规则组成,可能是下面的样子。foo: foo.o bar.o gcc -o foo foo.o bar.o foo.o: bar.h foo.c gcc -c foo.c bar.o: bar.h bar.c gcc -c bar.c上面是 makefile 的一个示例文件。它包含三个编译规则,对应三个编译产物(foo.o、bar.o和foo),每个编译规则之间使用空行分隔。有了 makefile,编译时,只要在 make 命令后面指定编译目标(编译产物的名字),就会自动调用对应的编译规则。$ make foo.o # or $ make bar.o # or $ make foo上面示例中,make 命令会根据不同的命令,生成不同的编译产物。如果省略了编译目标,make命令会执行第一条编译规则,构建相应的产物。$ make上面示例中,make后面没有编译目标,所以会执行 makefile 的第一条编译规则,本例是make foo。由于用户期望执行make后得到最终的可执行文件,所以建议总是把最终可执行文件的编译规则,放在 makefile 文件的第一条。makefile 本身对编译规则没有顺序要求。make 命令的强大之处在于,它不是每次执行命令,都会进行编译,而是会检查是否有必要重新编译。具体方法是,通过检查每个源码文件的时间戳,确定在上次编译之后,哪些文件发生过变动。然后,重新编译那些受到影响的编译产物(即编译产物直接或间接依赖于那些发生变动的源码文件),不受影响的编译产物,就不会重新编译。举例来说,上次编译之后,修改了foo.c,没有修改bar.c和bar.h。于是,重新运行make foo命令时,Make 就会发现bar.c和bar.h没有变动过,因此不用重新编译bar.o,只需要重新编译foo.o。有了新的foo.o以后,再跟bar.o一起,重新编译成新的可执行文件foo。Make 这样设计的最大好处,就是自动处理编译过程,只重新编译变动过的文件,因此大大节省了时间。原文链接:https://wangdoc.com/clang/multifile.html
-
鲲鹏920支持gcc4.4.7吗,C++代码程序需要从x86上迁移到鲲鹏,依赖GCC4.4.7,发现鲲鹏装gcc4.4.7无法成功,是不支持吗
-
gcc编辑器的使用 简介 什么是gcc? gcc命令使用GNU推出的基于C/C++的编译器,是开放源代码领域应用最广泛的编译器,具有功能强大,编译代码支持性能优化等特点。现在很多程序员都应用GCC,怎样才能更好的应用GCC。目前,GCC可以用来编译C/C++、FORTRAN、JAVA、OBJC、ADA等语言的程序,可根据需要选择安装支持的语言。本文将会介绍gcc编辑器的基本命令及使用方法。 检查gcc安装 使用gcc -v检查gcc是否安装 如果需要安装gcc可以使用以下命令进行安装yum install gcc gcc编译的过程 gcc编译过程一共分为4步分别是: 1、预处理,生成 .i 的文件[预处理器cpp] 2、将预处理后的文件转换成汇编语言, 生成文件 .s [编译器egcs] 3、有汇编变为目标代码(机器代码)生成 .o 的文件[汇编器as] 4、连接目标代码, 生成可执行程序 [链接器ld] 接下来开始认识一下gcc的常用命令 常用选项 gcc命令的基本格式 gcc [选项] [参数] 1、无选项直接编译 gcc 源文件 这里会直接默认输出a.out可以执行文件 2、选项 -o 将源文件进行进行编译后可以自定义输出可执行文件的名称 gcc test.c -o main 这里就会生成一个main的可执行文件,因为 Linux 下可执行文件的后缀仅仅是一种形式上的,所以可执行文件也可以不带后缀 使用./main可以直接执行 3、选项 -E gcc -E test.c -o test.i 将test.c预处理输出test.i文件。 4、选项 -S gcc -S test.i 将预处理输出文件test.i汇编成test.s文件。 5、选项 -c gcc -c test.s 将汇编输出文件test.s编译输出test.o文件。 6、选项 -O gcc -O1 test.c -o test 使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,但编译时间越长。 7、多源文件的编译方法 如果有多个源文件,基本上有两种编译方法: 假设有两个源文件为test.c和test1.c 多个文件一起编译 gcc test1.c test.c -o test 将testfun.c和test.c分别编译后链接成test可执行文件。 8、选项 -M 生成文件关联的信息。包含目标文件所依赖的所有源代码 gcc -M hello.c 9、 实际运用 建立一个文件夹 使用以下命令建立一个文件夹 mkdir code 进入到code中 cd code 开始创建第一个c语言文件——test.c touch test.c 使用vim 编辑如下内容 简单使用gcc对test.c进行编译,然后使用ls会发现在code目录下出现a.out可执行文件尝试运行a.out 使用如下命令./a.cout成功输出语句hello!,编译成功接下来尝试使用-o命令进行自定义编译出的可执行文件名为main.outgcc test.c -o main.out生成main.out文件注意这里在同一个目录下编译后的可执行文件不可以与源文件重名,否则会出现如下报错多源文件进行编译新建文件命名为printf.c,编辑如下内容void printf(){ printf("hello word\n"); } 编辑test.c文件内容为#include void printf(); int main(){ printf(); return 0; } 使用如下命令进行编译链接 gcc printf.c test.c -o test 这样就将两个源文件进行编译连接起来 常见错误解决方法 file format not recognized; treating as linker script 注意在进行多源文件编译的时候源文件后缀一定要标明,因为GCC编译器套件对源代码的后缀是有要求的,它根据后缀来判断源码类型的。 一些常见的gcc文件后缀如下 .c为后缀的文件,C语言源代码文件; .a为后缀的文件,是由目标文件构成的档案库文件; .C,.cc或.cxx 为后缀的文件,是C++源代码文件; .h为后缀的文件,是程序所包含的头文件; .i 为后缀的文件,是已经预处理过的C源代码文件; .ii为后缀的文件,是已经预处理过的C++源代码文件; .m为后缀的文件,是Objective-C源代码文件; .o为后缀的文件,是编译后的目标文件; .s为后缀的文件,是汇编语言源代码文件; .S为后缀的文件,是经过预编译的汇编语言源代码文件。
-
【功能模块】gcc【操作步骤&问题现象】1、报cc1plus 找不到2、找不到对应的社区, 和问题解答【截图信息】【日志信息】(可选,上传日志内容或者附件)
-
1.下载GCC及依赖库wget https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-9.3.0/gcc-9.3.0.tar.gz wget https://mirrors.tuna.tsinghua.edu.cn/gnu/gmp/gmp-6.1.0.tar.xz wget https://mirrors.tuna.tsinghua.edu.cn/gnu/mpfr/mpfr-3.1.4.tar.gz wget https://mirrors.tuna.tsinghua.edu.cn/gnu/mpc/mpc-1.0.3.tar.gz 2.安装gmptar -xvf gmp-6.1.0.tar.xz cd gmp-6.1.0 ./configure --prefix=/usr/local/gmp-6.1.0 make make install ln -s /usr/local/gmp-6.1.0 /usr/local/gmp 3.安装mpfrtar xzf mpfr-3.1.4.tar.gz cd mpfr-3.1.4 ./configure --prefix=/usr/local/mpfr-3.1.4 --with-gmp=/usr/local/gmp make make install ln -s /usr/local/mpfr-3.1.4 /usr/local/mpfr4.安装mpctar xzf mpc-1.0.3.tar.gz cd mpc-1.0.3 ./configure --prefix=/usr/local/mpc-1.0.3 --with-gmp=/usr/local/gmp --with-mpfr=/usr/local/mpfr make make install ln -s /usr/local/mpc-1.0.3 /usr/local/mpc5.安装gcctar xzf gcc-9.3.0.tar.gz cd gcc-9.3.0 ./configure --prefix=/usr/local/gcc-9.3.0 --with-mpfr=/usr/local/mpfr --with-gmp=/usr/local/gmp --with-mpc=/usr/local/mpc make -j make install -j ln -s /usr/local/gcc-9.3.0 /usr/local/gcc # 修改环境变量 vim /etc/profile # 在/etc/profile 最后添加以下内容,保存 export PATH=/usr/local/gcc/bin:$PATH export LD_LIBRARY_PATH=/usr/local/gcc/lib64:$LD_LIBRARY_PATH export MANPATH=/usr/local/gcc/share/man:$MANPATH 6.查看gcc版本gcc -v
-
大家好,本篇文章主要讲的是Linux系统下gcc命令使用详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览目录• 一.预处理 • 二. 编译 • 三.汇编 • 四.链接 1.gcc的安装(以Ubuntu为例) sudo apt-get install build-essential安装完后可以通过 gcc --version 查看版本。让我们在通过gcc编译可执行文件的过程中掌握其基础应用。准备: 先在当前目录下 使用vim新建一个.c文件 例如 666.c1$ vim 666.c(vim的使用可在我的另一篇博客有详细的叙述,这里不多在赘述)插入一段代码。12345678910#include <stdio.h>main(){ int a,i; a=6; for(i=0;i<3;i++) { printf("%d",a); }} (每次我们用 cat 查看)一.预处理1.预处理通过对宏定义(像#define)进行展开,对头文件(像 stdio.h)进行展开,对条件进行(像ifdef)编译,展开所有宏,删除所有注释(像"//").预处理cpp把源代码,头文件预编成一个.i文件。(注意这时并不检查语法,所以即使有语法错误也不会报错。) 2.命令:1$ gcc -E (源文件名) -o (预处理文件名)或者:1$ gcc (源文件名) > (预处理文件名) 例如按666.c 来说,预处理时可以是 : gcc -E 666.c -o 666.i 也可以是 gcc 666.c > 666.i二. 编译 1.编译也就是检查语法是否错误,将预处理过的文件编译成汇编文件。 2.命令:1$ gcc -S (源文件) -o (汇编文件) 例如 gcc -S 666.i -o 666.s三.汇编1. 汇编也就是将汇编文件生成目标文件(二进制文件)通过汇编,文本代码变成了二进制代码。(二进制代码文件以.o为后缀名)。2.命令:1$ gcc -c (汇编文件) -o (目标文件)例如 gcc -c 666.s -o 666.o(这时候因为是二进制文件了,所以会乱码)四.链接1. 链接找到依赖的库文件(静态与动态),将目标文件链接为可执行程序。1$ gcc -c [目标文件] -o [可执行程序] -l[动态库名]假如没有动态库的话(一般)直接1$ gcc -c [目标文件] -o [可执行程序] 例如 gcc -c 666.o -o 666此时会生成可执行程序 666如果想执行使用该命令:1$ ./可执行程序其中./是在当前目录下的意思。例如 ./666(注意:在一般我们使用时 如果使用 gcc 可执行文件名,会默认生成a.out 可执行文件,这时我们直接执行它时用 ./a.out )转载自https://www.jb51.net/article/233584.htm
-
GCC指导委员会批准了龙芯移植版本LoongArch,它有可能加入到即将在4月或5月发布的GCC 12稳定版本。LoongArch由龙芯开发,基于64位MIPS架构。龙芯此前一直在做GCC编译器的移植,以及Linux内核的修改和其它软件栈的支持。它的Linux内核修改被批评复制了大量MIPS代码,在这一问题妥善解决后Linux 内核支持的主要障碍变成了缺乏主线GCC编译器的支持.转载于CSDN微信公众号
-
1 介绍简要介绍大数据组件flink-shaded-netty module。2 环境要求硬件要求仅在线下的物理服务器时涉及,需要写作此章节。没有内容时请删除。硬件要求如表2-1所示。表2-1 硬件要求项目说明服务器Taishan服务器CPU鲲鹏920处理器 或 鲲鹏916处理器磁盘分区对磁盘分区无要求网络可访问外网 软件要求表2-2 软件要求项目说明CentOS7.6OS Kernel4.14.0GCC4.8.5Openjdk1.8.0_252Maven3.5.4Protobuf2.5.0netty-all4.0.27.Final 3 配置编译环境提供编译安装该软件所需的环境的安装方法,例如编译器、第三方库、JDK、OS的yum源、防火墙、用户帐号(如要安装前需要单独创建用户或用户组)、环境变量等。多个任务时原则上建议采用Section进行区分,任务操作步骤较多时可以灵活处理为子章节。任务之间的依赖关系需要在各自的任务中明确。写作注意点:l 执行的操作和命令必须用正文,不能用带灰色底纹的回显。l 命令执行后的回显,必须用文本(带灰色底纹的回显样式),不要用截图。示例:3.1 安装基础库 步骤 1 安装gcc等相关软件。确保有外网环境后,执行yum -y install gcc.aarch64 gcc-c++.aarch64 gcc-gfortran.aarch64 libgcc.aarch64XXXX 步骤 2 解决-fsigned-char问题(修改gcc)a、寻找gcc所在路径(一般位于“/usr/bin/gcc”)。command -v gcc b、更改gcc的名字(例如改成gcc-impl)。mv /usr/bin/gcc /usr/bin/gcc-impl c、新建gcc文件。vi /usr/bin/gcc d、填入如下内容保存。#! /bin/sh/usr/bin/gcc-impl -fsigned-char "$@" e、给脚本添加执行权限。chmod +x /usr/bin/gcc f、确认命令是否可用。gcc --version 步骤 3 解决-fsigned-char问题(修改g++)a、寻找gcc所在路径(一般位于“/usr/bin/g++”)。command -v g++ b、更改g++的名字(例如改成g++-impl)。mv /usr/bin/gcc /usr/bin/g++-impl c、新建g++文件。vi /usr/bin/g++ d、填入如下内容保存。#! /bin/sh/usr/bin/g++-impl -fsigned-char "$@" e、给脚本添加执行权限。chmod +x /usr/bin/g++ f、确认命令是否可用。g++ --version 步骤 4 安装依赖 yum安装依赖的相关软件。yum install -y wget vim openssl-devel zlib-devel automake libtool make libstdc++-static glibc-static git snappy snappy-devel fuse fuse-devel ----结束 3.2 安装OpenJDK 步骤 1 下载并解压安装到指定目录(此处以指定“/opt/tools/installed”目录为例)wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u252-b09/OpenJDK8U-jdk_aarch64_linux_hotspot_8u252b09.tar.gztar -zxf OpenJDK8U-jdk_aarch64_linux_hotspot_8u252b09.tar.gzmkdir -p /opt/tools/installed/mv jdk8u252-b09 /opt/tools/installed/ 步骤 2 配置Java环境变量vim /etc/profile在文件末尾添加如下代码。export JAVA_HOME=/opt/tools/installed/jdk8u252-b09export PATH=$JAVA_HOME/bin:$PATH 步骤 3 使修改的环境变量生效source /etc/profile 步骤 4 查看配置是否生效 3.3 安装Maven 步骤 1 下载并安装到指定目录(此处以指定“/opt/tools/installed”目录为例)wget https://archive.apache.org/dist/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gztar -zxf apache-maven-3.5.4-bin.tar.gzmv apache-maven-3.5.4 /opt/tools/installed/ 步骤 2 修改Maven环境变量vim /etc/profile在“/etc/profile”文件末尾增加下面代码。export MAVEN_HOME=/opt/tools/installed/apache-maven-3.5.4export PATH=$MAVEN_HOME/bin:$PATH 步骤 3 使修改的环境变量生效source /etc/profile 步骤 4 查看配置是否生效。mvn -v 步骤 5 查看配置是否生效。修改Maven配置文件中的:本地仓路径、远程仓等。配置文件路径:“/opt/tools/installed/apache-maven-3.5.4/conf/settings.xml”远程仓库配置(修改成自己搭建的Maven仓库,如果没有,可以按照下面示例配置),在<mirrors>标签内添加以下内容: <mirror> <id>huaweimaven</id> <name>huawei maven</name> <url>https://mirrors.huaweicloud.com/repository/maven/</url> <mirrorOf>central</mirrorOf></mirror> 若编译环境需要代理才能访问外网,需要在settings.xml配置文件中添加代理配置,具体内容如下:<proxies> <proxy> <id>optional</id> <active>true</active> <protocol>http</protocol> <username>用户名</username> <password>密码</password> <host>代理服务器网址</host> <port>代理服务器端口</port> <nonProxyHosts>local.net|some.host.com</nonProxyHosts> </proxy></proxies> 3.4 安装Protobuf 步骤 1 查看配置是否生效。yum install -y protobuf protobuf-devel 步骤 2 通过执行以下命令,指定安装的Protoc可执行文件mvn install:install-file -DgroupId=com.google.protobuf -DartifactId=protoc -Dversion=2.5.0 -Dclassifier=linux-aarch_64 -Dpackaging=exe -Dfile=/usr/bin/protoc 4 编译4.1 编译netty-all-4.0.27.Final 步骤 1 按xxx指导编译netty-all-4.0.27.Final4.2 编译flink-shaded-netty 步骤 1 下载flink-shaded-1.0安装包。wget https://github.com/apache/flink-shaded/archive/1.0.tar.gz 步骤 2 解压安装包。tar -zxf 1.0.tar.gz 步骤 3 进入解压后目录cd flink-shaded-1.0 步骤 4 执行编译编译打成jar包,flink-shaded-netty-4.0.27.Final-1.0.jar放置于“flink-shaded-netty-4/target”目录。mvn clean install -pl flink-shaded-netty-4 步骤 5 使用鲲鹏分析扫描工具扫描编译生成的jar包,确保没有包含有x86的so和jar包。----结束A 修订记录写作说明:仅在第一次发布时,明确第一次正式发布。后续的刷新记录,不需要写作是第几次发布,只需要提供发布日期和修订说明即可。发布日期修订记录2021-01-05第一次正式发布
-
1 介绍简要介绍大数据组件flink-shaded-netty module。2 环境要求硬件要求仅在线下的物理服务器时涉及,需要写作此章节。没有内容时请删除。硬件要求如表2-1所示。表2-1 硬件要求项目说明服务器Taishan服务器CPU鲲鹏920处理器 或 鲲鹏916处理器磁盘分区对磁盘分区无要求网络可访问外网 软件要求表2-2 软件要求项目说明CentOS7.6OS Kernel4.14.0GCC4.8.5Openjdk1.8.0_252Maven3.5.4Protobuf2.5.0netty-all4.0.27.Final 3 配置编译环境提供编译安装该软件所需的环境的安装方法,例如编译器、第三方库、JDK、OS的yum源、防火墙、用户帐号(如要安装前需要单独创建用户或用户组)、环境变量等。多个任务时原则上建议采用Section进行区分,任务操作步骤较多时可以灵活处理为子章节。任务之间的依赖关系需要在各自的任务中明确。写作注意点:l 执行的操作和命令必须用正文,不能用带灰色底纹的回显。l 命令执行后的回显,必须用文本(带灰色底纹的回显样式),不要用截图。示例:3.1 安装基础库 步骤 1 安装gcc等相关软件。确保有外网环境后,执行yum -y install gcc.aarch64 gcc-c++.aarch64 gcc-gfortran.aarch64 libgcc.aarch64XXXX 步骤 2 解决-fsigned-char问题(修改gcc)a、寻找gcc所在路径(一般位于“/usr/bin/gcc”)。command -v gcc b、更改gcc的名字(例如改成gcc-impl)。mv /usr/bin/gcc /usr/bin/gcc-impl c、新建gcc文件。vi /usr/bin/gcc d、填入如下内容保存。#! /bin/sh/usr/bin/gcc-impl -fsigned-char "$@" e、给脚本添加执行权限。chmod +x /usr/bin/gcc f、确认命令是否可用。gcc --version 步骤 3 解决-fsigned-char问题(修改g++)a、寻找gcc所在路径(一般位于“/usr/bin/g++”)。command -v g++ b、更改g++的名字(例如改成g++-impl)。mv /usr/bin/gcc /usr/bin/g++-impl c、新建g++文件。vi /usr/bin/g++ d、填入如下内容保存。#! /bin/sh/usr/bin/g++-impl -fsigned-char "$@" e、给脚本添加执行权限。chmod +x /usr/bin/g++ f、确认命令是否可用。g++ --version 步骤 4 安装依赖 yum安装依赖的相关软件。yum install -y wget vim openssl-devel zlib-devel automake libtool make libstdc++-static glibc-static git snappy snappy-devel fuse fuse-devel ----结束 3.2 安装OpenJDK 步骤 1 下载并解压安装到指定目录(此处以指定“/opt/tools/installed”目录为例)wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u252-b09/OpenJDK8U-jdk_aarch64_linux_hotspot_8u252b09.tar.gztar -zxf OpenJDK8U-jdk_aarch64_linux_hotspot_8u252b09.tar.gzmkdir -p /opt/tools/installed/mv jdk8u252-b09 /opt/tools/installed/ 步骤 2 配置Java环境变量vim /etc/profile在文件末尾添加如下代码。export JAVA_HOME=/opt/tools/installed/jdk8u252-b09export PATH=$JAVA_HOME/bin:$PATH 步骤 3 使修改的环境变量生效source /etc/profile 步骤 4 查看配置是否生效 3.3 安装Maven 步骤 1 下载并安装到指定目录(此处以指定“/opt/tools/installed”目录为例)wget https://archive.apache.org/dist/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gztar -zxf apache-maven-3.5.4-bin.tar.gzmv apache-maven-3.5.4 /opt/tools/installed/ 步骤 2 修改Maven环境变量vim /etc/profile在“/etc/profile”文件末尾增加下面代码。export MAVEN_HOME=/opt/tools/installed/apache-maven-3.5.4export PATH=$MAVEN_HOME/bin:$PATH 步骤 3 使修改的环境变量生效source /etc/profile 步骤 4 查看配置是否生效。mvn -v 步骤 5 查看配置是否生效。修改Maven配置文件中的:本地仓路径、远程仓等。配置文件路径:“/opt/tools/installed/apache-maven-3.5.4/conf/settings.xml”远程仓库配置(修改成自己搭建的Maven仓库,如果没有,可以按照下面示例配置),在<mirrors>标签内添加以下内容: <mirror> <id>huaweimaven</id> <name>huawei maven</name> <url>https://mirrors.huaweicloud.com/repository/maven/</url> <mirrorOf>central</mirrorOf></mirror> 若编译环境需要代理才能访问外网,需要在settings.xml配置文件中添加代理配置,具体内容如下:<proxies> <proxy> <id>optional</id> <active>true</active> <protocol>http</protocol> <username>用户名</username> <password>密码</password> <host>代理服务器网址</host> <port>代理服务器端口</port> <nonProxyHosts>local.net|some.host.com</nonProxyHosts> </proxy></proxies> 3.4 安装Protobuf 步骤 1 查看配置是否生效。yum install -y protobuf protobuf-devel 步骤 2 通过执行以下命令,指定安装的Protoc可执行文件mvn install:install-file -DgroupId=com.google.protobuf -DartifactId=protoc -Dversion=2.5.0 -Dclassifier=linux-aarch_64 -Dpackaging=exe -Dfile=/usr/bin/protoc 4 编译4.1 编译netty-all-4.0.27.Final 步骤 1 按xxx指导编译netty-all-4.0.27.Final4.2 编译flink-shaded-netty 步骤 1 下载flink-shaded-2.0安装包。wget https://github.com/apache/flink-shaded/archive/2.0.tar.gz 步骤 2 解压安装包。tar -zxf 2.0.tar.gz 步骤 3 进入解压后目录cd flink-shaded-2.0 步骤 4 执行编译编译打成jar包,flink-shaded-netty-4.0.27.Final-2.0.jar放置于“flink-shaded-netty-4/target”目录。mvn clean install -pl flink-shaded-netty-4 步骤 5 使用鲲鹏分析扫描工具扫描编译生成的jar包,确保没有包含有x86的so和jar包。----结束A 修订记录写作说明:仅在第一次发布时,明确第一次正式发布。后续的刷新记录,不需要写作是第几次发布,只需要提供发布日期和修订说明即可。发布日期修订记录2021-01-05第一次正式发布
-
1 介绍简要介绍大数据组件flink-shaded-netty module。2 环境要求硬件要求仅在线下的物理服务器时涉及,需要写作此章节。没有内容时请删除。硬件要求如表2-1所示。表2-1 硬件要求项目说明服务器Taishan服务器CPU鲲鹏920处理器 或 鲲鹏916处理器磁盘分区对磁盘分区无要求网络可访问外网 软件要求表2-2 软件要求项目说明CentOS7.6OS Kernel4.14.0GCC4.8.5Openjdk1.8.0_252Maven3.5.4Protobuf2.5.0netty-all4.0.56.Final 3 配置编译环境提供编译安装该软件所需的环境的安装方法,例如编译器、第三方库、JDK、OS的yum源、防火墙、用户帐号(如要安装前需要单独创建用户或用户组)、环境变量等。多个任务时原则上建议采用Section进行区分,任务操作步骤较多时可以灵活处理为子章节。任务之间的依赖关系需要在各自的任务中明确。写作注意点:l 执行的操作和命令必须用正文,不能用带灰色底纹的回显。l 命令执行后的回显,必须用文本(带灰色底纹的回显样式),不要用截图。示例:3.1 安装基础库 步骤 1 安装gcc等相关软件。确保有外网环境后,执行yum -y install gcc.aarch64 gcc-c++.aarch64 gcc-gfortran.aarch64 libgcc.aarch64XXXX 步骤 2 解决-fsigned-char问题(修改gcc)a、寻找gcc所在路径(一般位于“/usr/bin/gcc”)。command -v gcc b、更改gcc的名字(例如改成gcc-impl)。mv /usr/bin/gcc /usr/bin/gcc-impl c、新建gcc文件。vi /usr/bin/gcc d、填入如下内容保存。#! /bin/sh/usr/bin/gcc-impl -fsigned-char "$@" e、给脚本添加执行权限。chmod +x /usr/bin/gcc f、确认命令是否可用。gcc --version 步骤 3 解决-fsigned-char问题(修改g++)a、寻找gcc所在路径(一般位于“/usr/bin/g++”)。command -v g++ b、更改g++的名字(例如改成g++-impl)。mv /usr/bin/gcc /usr/bin/g++-impl c、新建g++文件。vi /usr/bin/g++ d、填入如下内容保存。#! /bin/sh/usr/bin/g++-impl -fsigned-char "$@" e、给脚本添加执行权限。chmod +x /usr/bin/g++ f、确认命令是否可用。g++ --version 步骤 4 安装依赖 yum安装依赖的相关软件。yum install -y wget vim openssl-devel zlib-devel automake libtool make libstdc++-static glibc-static git snappy snappy-devel fuse fuse-devel ----结束 3.2 安装OpenJDK 步骤 1 下载并解压安装到指定目录(此处以指定“/opt/tools/installed”目录为例)wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u252-b09/OpenJDK8U-jdk_aarch64_linux_hotspot_8u252b09.tar.gztar -zxf OpenJDK8U-jdk_aarch64_linux_hotspot_8u252b09.tar.gzmkdir -p /opt/tools/installed/mv jdk8u252-b09 /opt/tools/installed/ 步骤 2 配置Java环境变量vim /etc/profile在文件末尾添加如下代码。export JAVA_HOME=/opt/tools/installed/jdk8u252-b09export PATH=$JAVA_HOME/bin:$PATH 步骤 3 使修改的环境变量生效source /etc/profile 步骤 4 查看配置是否生效 3.3 安装Maven 步骤 1 下载并安装到指定目录(此处以指定“/opt/tools/installed”目录为例)wget https://archive.apache.org/dist/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gztar -zxf apache-maven-3.5.4-bin.tar.gzmv apache-maven-3.5.4 /opt/tools/installed/ 步骤 2 修改Maven环境变量vim /etc/profile在“/etc/profile”文件末尾增加下面代码。export MAVEN_HOME=/opt/tools/installed/apache-maven-3.5.4export PATH=$MAVEN_HOME/bin:$PATH 步骤 3 使修改的环境变量生效source /etc/profile 步骤 4 查看配置是否生效。mvn -v 步骤 5 查看配置是否生效。修改Maven配置文件中的:本地仓路径、远程仓等。配置文件路径:“/opt/tools/installed/apache-maven-3.5.4/conf/settings.xml”远程仓库配置(修改成自己搭建的Maven仓库,如果没有,可以按照下面示例配置),在<mirrors>标签内添加以下内容: <mirror> <id>huaweimaven</id> <name>huawei maven</name> <url>https://mirrors.huaweicloud.com/repository/maven/</url> <mirrorOf>central</mirrorOf></mirror> 若编译环境需要代理才能访问外网,需要在settings.xml配置文件中添加代理配置,具体内容如下:<proxies> <proxy> <id>optional</id> <active>true</active> <protocol>http</protocol> <username>用户名</username> <password>密码</password> <host>代理服务器网址</host> <port>代理服务器端口</port> <nonProxyHosts>local.net|some.host.com</nonProxyHosts> </proxy></proxies> 3.4 安装Protobuf 步骤 1 查看配置是否生效。yum install -y protobuf protobuf-devel 步骤 2 通过执行以下命令,指定安装的Protoc可执行文件mvn install:install-file -DgroupId=com.google.protobuf -DartifactId=protoc -Dversion=2.5.0 -Dclassifier=linux-aarch_64 -Dpackaging=exe -Dfile=/usr/bin/protoc 4 编译4.1 编译netty-all-4.0.56.Final 步骤 1 按xxx指导编译netty-all-4.0.56.Final4.2 编译flink-shaded-netty 步骤 1 下载flink-shaded-2.0安装包。wget https://github.com/apache/flink-shaded/archive/3.0.tar.gz 步骤 2 解压安装包。tar -zxf 3.0.tar.gz 步骤 3 进入解压后目录cd flink-shaded-3.0 步骤 4 执行编译编译打成jar包,flink-shaded-netty-4.0.56.Final-3.0.jar放置于“flink-shaded-netty-4/target”目录。mvn clean install -pl flink-shaded-netty-4 步骤 5 使用鲲鹏分析扫描工具扫描编译生成的jar包,确保没有包含有x86的so和jar包。----结束A 修订记录写作说明:仅在第一次发布时,明确第一次正式发布。后续的刷新记录,不需要写作是第几次发布,只需要提供发布日期和修订说明即可。发布日期修订记录2021-01-05第一次正式发布
-
1 介绍简要介绍大数据组件flink-shaded-netty module。2 环境要求硬件要求仅在线下的物理服务器时涉及,需要写作此章节。没有内容时请删除。硬件要求如表2-1所示。表2-1 硬件要求项目说明服务器Taishan服务器CPU鲲鹏920处理器 或 鲲鹏916处理器磁盘分区对磁盘分区无要求网络可访问外网 软件要求表2-2 软件要求项目说明CentOS7.6OS Kernel4.14.0GCC4.8.5Openjdk1.8.0_252Maven3.5.4Protobuf2.5.0netty-all4.1.24.Final 3 配置编译环境提供编译安装该软件所需的环境的安装方法,例如编译器、第三方库、JDK、OS的yum源、防火墙、用户帐号(如要安装前需要单独创建用户或用户组)、环境变量等。多个任务时原则上建议采用Section进行区分,任务操作步骤较多时可以灵活处理为子章节。任务之间的依赖关系需要在各自的任务中明确。写作注意点:l 执行的操作和命令必须用正文,不能用带灰色底纹的回显。l 命令执行后的回显,必须用文本(带灰色底纹的回显样式),不要用截图。示例:3.1 安装基础库 步骤 1 安装gcc等相关软件。确保有外网环境后,执行yum -y install gcc.aarch64 gcc-c++.aarch64 gcc-gfortran.aarch64 libgcc.aarch64XXXX 步骤 2 解决-fsigned-char问题(修改gcc)a、寻找gcc所在路径(一般位于“/usr/bin/gcc”)。command -v gcc b、更改gcc的名字(例如改成gcc-impl)。mv /usr/bin/gcc /usr/bin/gcc-impl c、新建gcc文件。vi /usr/bin/gcc d、填入如下内容保存。#! /bin/sh/usr/bin/gcc-impl -fsigned-char "$@" e、给脚本添加执行权限。chmod +x /usr/bin/gcc f、确认命令是否可用。gcc --version 步骤 3 解决-fsigned-char问题(修改g++)a、寻找gcc所在路径(一般位于“/usr/bin/g++”)。command -v g++ b、更改g++的名字(例如改成g++-impl)。mv /usr/bin/gcc /usr/bin/g++-impl c、新建g++文件。vi /usr/bin/g++ d、填入如下内容保存。#! /bin/sh/usr/bin/g++-impl -fsigned-char "$@" e、给脚本添加执行权限。chmod +x /usr/bin/g++ f、确认命令是否可用。g++ --version 步骤 4 安装依赖 yum安装依赖的相关软件。yum install -y wget vim openssl-devel zlib-devel automake libtool make libstdc++-static glibc-static git snappy snappy-devel fuse fuse-devel ----结束 3.2 安装OpenJDK 步骤 1 下载并解压安装到指定目录(此处以指定“/opt/tools/installed”目录为例)wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u252-b09/OpenJDK8U-jdk_aarch64_linux_hotspot_8u252b09.tar.gztar -zxf OpenJDK8U-jdk_aarch64_linux_hotspot_8u252b09.tar.gzmkdir -p /opt/tools/installed/mv jdk8u252-b09 /opt/tools/installed/ 步骤 2 配置Java环境变量vim /etc/profile在文件末尾添加如下代码。export JAVA_HOME=/opt/tools/installed/jdk8u252-b09export PATH=$JAVA_HOME/bin:$PATH 步骤 3 使修改的环境变量生效source /etc/profile 步骤 4 查看配置是否生效 3.3 安装Maven 步骤 1 下载并安装到指定目录(此处以指定“/opt/tools/installed”目录为例)wget https://archive.apache.org/dist/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gztar -zxf apache-maven-3.5.4-bin.tar.gzmv apache-maven-3.5.4 /opt/tools/installed/ 步骤 2 修改Maven环境变量vim /etc/profile在“/etc/profile”文件末尾增加下面代码。export MAVEN_HOME=/opt/tools/installed/apache-maven-3.5.4export PATH=$MAVEN_HOME/bin:$PATH 步骤 3 使修改的环境变量生效source /etc/profile 步骤 4 查看配置是否生效。mvn -v 步骤 5 查看配置是否生效。修改Maven配置文件中的:本地仓路径、远程仓等。配置文件路径:“/opt/tools/installed/apache-maven-3.5.4/conf/settings.xml”远程仓库配置(修改成自己搭建的Maven仓库,如果没有,可以按照下面示例配置),在<mirrors>标签内添加以下内容: <mirror> <id>huaweimaven</id> <name>huawei maven</name> <url>https://mirrors.huaweicloud.com/repository/maven/</url> <mirrorOf>central</mirrorOf></mirror> 若编译环境需要代理才能访问外网,需要在settings.xml配置文件中添加代理配置,具体内容如下:<proxies> <proxy> <id>optional</id> <active>true</active> <protocol>http</protocol> <username>用户名</username> <password>密码</password> <host>代理服务器网址</host> <port>代理服务器端口</port> <nonProxyHosts>local.net|some.host.com</nonProxyHosts> </proxy></proxies> 3.4 安装Protobuf 步骤 1 查看配置是否生效。yum install -y protobuf protobuf-devel 步骤 2 通过执行以下命令,指定安装的Protoc可执行文件mvn install:install-file -DgroupId=com.google.protobuf -DartifactId=protoc -Dversion=2.5.0 -Dclassifier=linux-aarch_64 -Dpackaging=exe -Dfile=/usr/bin/protoc 4 编译4.1 编译netty-all-4.1.24.Final 步骤 1 按xxx指导编译netty-all-4.1.24.Final4.2 编译flink-shaded-netty 步骤 1 下载flink-shaded-4.0安装包。wget https://github.com/apache/flink-shaded/archive/4.0.tar.gz 步骤 2 解压安装包。tar -zxf 4.0.tar.gz 步骤 3 进入解压后目录cd flink-shaded-4.0 步骤 4 执行编译编译打成jar包,flink-shaded-netty-4.1.24.Final-4.0.jar放置于“flink-shaded-netty-4/target”目录。mvn clean install -pl flink-shaded-netty-4 步骤 5 使用鲲鹏分析扫描工具扫描编译生成的jar包,确保没有包含有x86的so和jar包。----结束A 修订记录写作说明:仅在第一次发布时,明确第一次正式发布。后续的刷新记录,不需要写作是第几次发布,只需要提供发布日期和修订说明即可。发布日期修订记录2021-01-05第一次正式发布
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签