C编译错误:程序中出现'\ 4'错误; 八进制stream?

试图编译一个.c文件的负载

(1)使用cc可以编译好的文件

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

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

 ar cru liborientdb-ca *.o 

(3)工作正常。 但是,当我来编译c#程序testme.cpp,其中包括行#1库

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

编译步骤:

 cc testme.cpp 

我得到这个错误:

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

所以,按照这里的其他一些职位的build议,我相信这些错误可能是由于编码混乱。

所以我使用'od -c'来尝试跟踪“八进制stream”在哪里变得混乱。 我的.o文件之一的'od -c'的输出看起来很糟糕,所以我认为这可能是原因。

例如。

 0000000 177 ELF 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 UH 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 

我怎样才能解决这个问题呢? 我实际上遵循这里的build议,并运行在我的lib源文件

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

响应是文件保持不变(最后的修改date仍然是旧的)。 那么我打开我的.c文件,看看它们是UTF-8,这显然是ASCII的一个子集。 所以这似乎没有问题。

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

如何进行 ???

 #include "liborientdb-ca" 

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

通常,.a文件被添加到编译的最后一个链接行。

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

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

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

找一个名为“liborientdb-ch”的头文件,并且包含这个(猜测,你可能想要包含所有合适的* .h头文件)。

而你的makefile应该链接到上面的.a文件。