C 编译:错误:程序中杂散'4';八进流量?



尝试编译 .c 文件的加载

(1(文件编译正常,使用cc

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

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

ar cru liborientdb-c.a *.o

(3(工作正常。但是,当我开始编译 c++ 程序 testme 时.cpp其中包括第 #1 行中的库

(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                  
0000020 001     >   001                      
0000040                   `   (            
0000060           @             @   026   023  
0000100   U   H 211   ?   H 203   ? 020   H 211   }   ?   H 211   u   ?
0000120   H 213   E   ?   H 213     H 213   @  b   H 205   ?   t 023
0000140   H 213   E   ?   H 213     H 213   @  b   H 211   ?   ?  

不过我该如何解决这个问题?我实际上遵循了这里的建议并在我的 lib 源文件上运行

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

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

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

如何进行???

#include "liborientdb-c.a"

.a 文件不是 C 源文件。甚至为此提供文本文件。

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

cc -o something file.o file2.o liborientdb-c.a etc etc

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

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

查找一个名为"liborientdb-c.h"的头文件,并包含它(猜测,您可能希望包含所有适当的 *.h 头文件(。

并且您的生成文件应链接到上述 .a 文件。

相关内容

  • 没有找到相关文章

最新更新