Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何确定在64位机器上构建的32位库是否需要x86_64或i386依赖项? 我更新了一些旧的C++项目,以便首次在64位Linux机器上建立,而且Linux的经验不多。我需要将所有内容构建为32位二进制文件,因此我在编译器和链接器标志中使用-m32构建所有内容。我发现,当链接到它们的依赖项时,有些必须链接到i386共享对象,有些必须链接到x86_64共享对象。如果我只在链接路径中包含错误的文件夹(-L/path/to/error/folder),它会说_C++_Linux_Gcc_Linker_G++ - Fatal编程技术网

如何确定在64位机器上构建的32位库是否需要x86_64或i386依赖项? 我更新了一些旧的C++项目,以便首次在64位Linux机器上建立,而且Linux的经验不多。我需要将所有内容构建为32位二进制文件,因此我在编译器和链接器标志中使用-m32构建所有内容。我发现,当链接到它们的依赖项时,有些必须链接到i386共享对象,有些必须链接到x86_64共享对象。如果我只在链接路径中包含错误的文件夹(-L/path/to/error/folder),它会说

如何确定在64位机器上构建的32位库是否需要x86_64或i386依赖项? 我更新了一些旧的C++项目,以便首次在64位Linux机器上建立,而且Linux的经验不多。我需要将所有内容构建为32位二进制文件,因此我在编译器和链接器标志中使用-m32构建所有内容。我发现,当链接到它们的依赖项时,有些必须链接到i386共享对象,有些必须链接到x86_64共享对象。如果我只在链接路径中包含错误的文件夹(-L/path/to/error/folder),它会说,c++,linux,gcc,linker,g++,C++,Linux,Gcc,Linker,G++,我渐渐明白了 对于两个如此不同的项目,makefiles几乎是相同的,因此我似乎没有明显做错什么,并且-m32出现在终端中对gcc和g++的调用中。是什么导致了这种差异?我应该担心吗,还是这是典型的情况 如果需要更多信息来回答,请告诉我;我不太确定,因为我对Linux和gcc缺乏经验,所以提前道歉。谢谢@Wyzard和@Dashwuff提供的提示。通过在.o文件上使用文件,我确实能够找到我的问题。这只是一个愚蠢的错误;我无意中恢复了对其中一个项目的make文件所做的更改,其中包括添加-m32标志

我渐渐明白了

对于两个如此不同的项目,makefiles几乎是相同的,因此我似乎没有明显做错什么,并且
-m32
出现在终端中对
gcc
g++
的调用中。是什么导致了这种差异?我应该担心吗,还是这是典型的情况


如果需要更多信息来回答,请告诉我;我不太确定,因为我对Linux和gcc缺乏经验,所以提前道歉。

谢谢@Wyzard和@Dashwuff提供的提示。通过在.o文件上使用
文件
,我确实能够找到我的问题。这只是一个愚蠢的错误;我无意中恢复了对其中一个项目的
make
文件所做的更改,其中包括添加
-m32
标志。我想我误解了“x86_64”库的用途,这让我很困惑(我原以为它是指“64位机器的32位进程”)。

感谢@Wyzard和@dashwuff提供的提示。通过在.o文件上使用
文件
,我确实能够找到我的问题。这只是一个愚蠢的错误;我无意中恢复了对其中一个项目的
make
文件所做的更改,其中包括添加
-m32
标志。我想我误解了“x86_64”库的用途,这让我很困惑(我以为它是指“64位机器的32位进程”)。

如果要构建32位可执行文件,必须链接到32位库。如果链接到32位库时出现错误,则说明过程中出现了问题,您需要向我们提供更多详细信息。在
.o
文件上运行
文件,它将告诉您这些文件是32位还是64位。(如果使用
-m32
,则它们应该是32位的。)如果要构建32位可执行文件,则必须链接到32位库。如果链接到32位库时出现错误,则说明过程中出现了问题,您需要向我们提供更多详细信息。在
.o
文件上运行
文件,它将告诉您这些文件是32位还是64位。(如果使用
-m32
构建,则它们应该是32位的。)(我最初在2017年4月24日的问题评论中发布了这个问题,并投票结束了我自己的问题,但后来有人在发布后很长时间对其进行了投票,所以我猜这个问题以及解决问题的方式对他们有帮助……因此,我将添加此社区维基答案。)(我最初在2017年4月24日的问题评论中发布了这个问题,并投票结束了我自己的问题,但后来有人在发布后很长时间对其进行了投票,所以我猜这个问题以及解决问题的方式对他们有帮助……因此,我将添加此社区维基答案。)
/usr/bin/ld: skipping incompatible xxx.so when searching for -lxxx