跳过不兼容的目录-gcc

跳过不兼容的目录-gcc,gcc,ld,Gcc,Ld,我尝试使用包中的一些库编译脚本,使用: gcc -g -o sac2mt5 sac2mt5.o libsac2mt5.a -L/home/yuki/sac/lib -lsacio -lm 这就是我得到的错误: /usr/bin/ld: skipping incompatible /home/yuki/sac/lib/libsacio.a when searching for -lsacio /usr/bin/ld: cannot find -lsacio collect2: error: ld

我尝试使用包中的一些库编译脚本,使用:

gcc -g -o sac2mt5 sac2mt5.o libsac2mt5.a -L/home/yuki/sac/lib -lsacio -lm
这就是我得到的错误:

/usr/bin/ld: skipping incompatible /home/yuki/sac/lib/libsacio.a when searching for -lsacio
/usr/bin/ld: cannot find -lsacio
collect2: error: ld returned 1 exit status
这里有什么问题?为什么这个库不兼容?为了避免这种情况,需要在标志中更改哪些内容?我只是想知道这是否是图书馆的问题,我对此无能为力,或者我是否做错了什么


任何帮助都是值得的。

/home/yuki/sac/lib/libsacio。a
是为架构而构建的 与您试图链接程序的程序不兼容。 最可能的原因是库包含32位对象文件和 您正在尝试64位链接。下一个最有可能的是64位库 在32位链接中

如果您
cd
到运行此链接的目录并运行:

$ objdump -f sac2mt5.o
输出将包含以下格式的行:

sac2mt5.o:  file format <...>
architecture: <...>, flags 0x<...>:
或(32位ELF):

这些将告诉您尝试链接的体系结构的名称( 系统的体系结构)及其对象文件格式的名称

如果您同时运行:

$ objdump -f /home/yuki/sac/lib/libsacio.a
您将在中看到每个对象文件的相应信息 归档
/home/yuki/sac/lib/libsacio.a
,您将看到该体系结构 这些对象文件的文件格式与您的系统不匹配

您需要找到并使用为相同体系结构构建的
libsacio.a
作为您的系统-如果您的系统是64位的,则最有可能是64位库;32位
如果您的系统是32位的,则为library。

/home/yuki/sac/lib/libsacio。a
是为体系结构构建的 与您试图链接程序的程序不兼容。 最可能的原因是库包含32位对象文件和 您正在尝试64位链接。下一个最有可能的是64位库 在32位链接中

如果您
cd
到运行此链接的目录并运行:

$ objdump -f sac2mt5.o
输出将包含以下格式的行:

sac2mt5.o:  file format <...>
architecture: <...>, flags 0x<...>:
或(32位ELF):

这些将告诉您尝试链接的体系结构的名称( 系统的体系结构)及其对象文件格式的名称

如果您同时运行:

$ objdump -f /home/yuki/sac/lib/libsacio.a
您将在中看到每个对象文件的相应信息 归档
/home/yuki/sac/lib/libsacio.a
,您将看到该体系结构 这些对象文件的文件格式与您的系统不匹配

您需要找到并使用为相同体系结构构建的
libsacio.a
作为您的系统-如果您的系统是64位的,则最有可能是64位库;32位
如果您的系统是32位的,请使用库。

谢谢。我觉得是这样的,但我不明白到底该检查什么谢谢。我觉得是这样的,但我不明白到底要检查什么