繁体   English   中英

C编译:错误:程序中出现流浪“ \\ 4”; 八进制流量?

[英]C Compiling: error: stray '\4' in program ; octal flow?

尝试编译.c文件的负载

(1)使用cc编译文件

cc -Wall -Wextra -Wunreachable-code -ggdb -O0 *.c 

(2)然后,我需要从最终输出中创建一个静态库,以在c ++程序中使用。 所以我做:

ar cru liborientdb-c.a *.o

(3)正常。 但是,当我来编译包含第1行中的库的c ++程序testme.cpp时

(line 1 of testme.cpp)
#include "liborientdb-c.a"

编译步骤:

cc testme.cpp

我收到此错误:

liborientdb-c.a:117:22: error: stray '\3' in program
liborientdb-c.a:117:263: warning: null character(s) ignored [enabled by default]
liborientdb-c.a:117:22: error: stray '\17' in program
liborientdb-c.a:117:265: warning: null character(s) ignored [enabled by default]
liborientdb-c.a:117:283: warning: null character(s) ignored [enabled by default]
liborientdb-c.a:117:22: error: stray '\22' in program
liborientdb-c.a:117:287: warning: null character(s) ignored [enabled by default]
liborientdb-c.a:117:22: error: stray '\1' in program
liborientdb-c.a:117:289: warning: null character(s) ignored [enabled by default]
liborientdb-c.a:117:22: error: stray '\362' in program
....

因此,按照此处其他文章的建议,我相信错误可能是由于编码混乱所致。

因此,我使用了“ od -c”并尝试跟踪“八进制流”的位置。 'od -c'之后我的.o文件之一的输出看起来很糟糕,所以我认为这可能是原因。

例如。

0000000 177   E   L   F 002 001 001  \0  \0  \0  \0  \0  \0  \0  \0  \0
0000020 001  \0   >  \0 001  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
0000040  \0  \0  \0  \0  \0  \0  \0  \0   `   (  \0  \0  \0  \0  \0  \0
0000060  \0  \0  \0  \0   @  \0  \0  \0  \0  \0   @  \0 026  \0 023  \0
0000100   U   H 211   ?   H 203   ? 020   H 211   }   ?   H 211   u   ?
0000120   H 213   E   ?   H 213  \0   H 213   @  \b   H 205   ?   t 023
0000140   H 213   E   ?   H 213  \0   H 213   @  \b   H 211   ?   ?  \0

我该如何解决呢? 我实际上遵循这里的建议并在我的lib源文件上运行

recode UTF8..ISO-8859-15 *.c

响应是文件保持不变(上次修改日期仍旧)。 因此,我打开了.c文件,然后看到它们位于UTF-8中,这显然是ASCII的子集。 因此,那时似乎没有问题。

但是.o文件仍然看起来很奇怪。

如何进行 ???

#include "liborientdb-c.a"

.a文件不是C源文件。 甚至是文本文件。

通常,.a文件添加在编译的最终链接行上。

cc -o某些文件.o file2.o liborientdb-ca等

您在.cpp源文件中包含一个二进制文件

(line 1 of testme.cpp)
#include "liborientdb-c.a"

查找名为“ liborientdb-ch”的头文件,并包含该头文件(猜测,您可能希望包括所有适当的* .h头文件)。

并且您的makefile应该链接到上述.a文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM