跳过不兼容的目录 - gcc
Skipping incompatible directory - gcc
我正在尝试使用包中可用的一些库来编译脚本,使用:
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
是为架构构建的
与您尝试 link 该程序的不兼容。
最可能的原因是该库包含 32 位目标文件和
您正在尝试 64 位 linkage。下一个最有可能的是 64 位库
在 32 位 linkage.
如果您 cd
进入您 运行 这个 link 年龄和 运行 的目录:
$ objdump -f sac2mt5.o
输出将包含以下形式的行:
sac2mt5.o: file format <...>
architecture: <...>, flags 0x<...>:
例如(64 位 ELF):
sac2mt5.o: file format elf64-x86-64
architecture: i386:x86-64, flags 0x00000010:
或(32 位 ELF):
sac2mt5.o: file format elf32-i386
architecture: i386, flags 0x00000010:
这些告诉您您尝试 link 的体系结构的名称(
您系统的体系结构)及其目标文件格式的名称。
如果你也运行:
$ objdump -f /home/yuki/sac/lib/libsacio.a
您将在
archive /home/yuki/sac/lib/libsacio.a
,你会看到架构
这些目标文件的文件格式与您的系统不匹配。
您需要找到并使用为相同架构构建的 libsacio.a
作为您的系统 - 如果您的系统是 64 位,则很可能是 64 位库;一个 32 位
如果您的系统是 32 位,则库。
我正在尝试使用包中可用的一些库来编译脚本,使用:
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
是为架构构建的
与您尝试 link 该程序的不兼容。
最可能的原因是该库包含 32 位目标文件和
您正在尝试 64 位 linkage。下一个最有可能的是 64 位库
在 32 位 linkage.
如果您 cd
进入您 运行 这个 link 年龄和 运行 的目录:
$ objdump -f sac2mt5.o
输出将包含以下形式的行:
sac2mt5.o: file format <...>
architecture: <...>, flags 0x<...>:
例如(64 位 ELF):
sac2mt5.o: file format elf64-x86-64
architecture: i386:x86-64, flags 0x00000010:
或(32 位 ELF):
sac2mt5.o: file format elf32-i386
architecture: i386, flags 0x00000010:
这些告诉您您尝试 link 的体系结构的名称( 您系统的体系结构)及其目标文件格式的名称。
如果你也运行:
$ objdump -f /home/yuki/sac/lib/libsacio.a
您将在
archive /home/yuki/sac/lib/libsacio.a
,你会看到架构
这些目标文件的文件格式与您的系统不匹配。
您需要找到并使用为相同架构构建的 libsacio.a
作为您的系统 - 如果您的系统是 64 位,则很可能是 64 位库;一个 32 位
如果您的系统是 32 位,则库。