我最近在编译Linux的时候遇到个错误,就是别人上传源码后他的环境变量也会一起上传,导致我编译的时候会出现某些报错,我在下面一一列举:
1:gdbusauth.c:1302:11: error: ‘%s’ directive argument is null
- gdbusauth.c:1302:11: error: ‘%s’ directive argument is null [-Werror=format-overflow=]
- 1302 | debug_print ("SERVER: WaitingForBegin, read '%s'", line);
- gdbusmessage.c:2702:30: error: ‘%s’ directive argument is null [-Werror=format-overflow=]
- 2702 | tupled_signature_str = g_strdup_printf ("(%s)", signature_str);
复制代码 首先寻找到这两个文件
- sudo find / -name gdbusauth.c
- sudo find / -name gdbusmessage.c
复制代码 然后进入目录 打开
- sudo vi gdbusauth.c
-
- #进入vi编辑器 根据错误找到第1302行 可在一般模式输入1302gg移动到该位置
- #在错误前输入 if(line != NULL)
- #:wq退出保存
-
- 同理
-
- sudo vi gdbusmessage.c
-
- #进入vi编辑器 根据错误找到第2702行 可在一般模式输入2702gg移动到该位置
- #在错误前输入 if(signature_str!= NULL)
- #:wq退出保存
复制代码 完成之后再重新编译,编译后可能会发现第二个错误
2:gawk编译ibgpg-error-1.33出错
- strerror-sym.c:45:13: warning: implicit declaration of function 'errnos_msgidxof'; did you mean 'msgidxof'? [-Wimplicit-function-declaration]
- idx = errnos_msgidxof (code);
- ^~~~~~~~~~~~~~~
- msgidxof
- strerror-sym.c:47:9: error: 'errnos_msgstr' undeclared (first use in this function)
- return errnos_msgstr + errnos_msgidx[idx];
- ^~~~~~~~~~~~~
- strerror-sym.c:47:9: note: each undeclared identifier is reported only once for each function it appears in
- strerror-sym.c:47:25: error: 'errnos_msgidx' undeclared (first use in this function); did you mean 'errnos_msgstr'?
- return errnos_msgstr + errnos_msgidx[idx];
- ^~~~~~~~~~~~~
- errnos_msgstr
复制代码 解决方案:
找到libgpg-error-1.33编译包的位置,并分别找到这几个文件:
libgpg-error-1.33/lang/cl/mkerrcodes.awk
libgpg-error-1.33/src/mkerrcodes.awk
libgpg-error-1.33/src/mkerrcodes1.awk
libgpg-error-1.33/src/mkerrcodes2.awk
libgpg-error-1.33/src/mkerrnos.awk
libgpg-error-1.33/src/mkstrtable.awk
并找到
- !header {
- sub (/\#.+/, "");
复制代码
将上诉所有文件中的所有"sub (/\#.+/, “”);",改为:“sub (/#.+/, “”);”,也就是说最新的gawk能够识别到’#'号不需要使用转义字符(‘\‘)的帮助
最后找到,如下几个文件:
libgpg-error-1.33/src/Makefile
libgpg-error-1.33/src/Makefile.am
libgpg-error-1.33/src/Makefile.in
libgpg-error-1.33/src/mkstrtable.awk
打开上述文件,搜索“namespace”,将所有搜索到的结果替换为“pkg_namespace”
然后必要clean,运行编译命令重新编译就ok了
如果是直接拷贝别人已经编译过的T5的SDK进行编译,那么可能会出现编译成功后,Makefile交叉编译工具路径设置正确, 但是在make实例中的sdk_demo时,会出现找不到编译工具的问题。这时找到sdk_demo所在目录的makefile_cfg文件,打开它并将LICHEE_BR_OUT=“path”,改为自己的路径,就可以了。
|