相关疑难解决方法(0)

强制gcc在64位平台上编译32位程序

我有一个专有程序,我试图在64位系统上使用.

当我启动设置它可以正常工作,但在它尝试更新自己并编译一些模块后,它无法加载它们.

我怀疑它是因为它使用gcc和gcc尝试为64位系统编译它们,因此该程序不能使用这些模块.

是否有任何方法(一些环境变量或类似的东西)迫使gcc为32位平台做所有事情.32位chroot会工作吗?

linux gcc 32-bit x86-64

61
推荐指数
3
解决办法
8万
查看次数

使用CMake强制进行32位编译的正确方法

很抱歉,有许多类似的问题,但我确实发现谷歌搜索CMake查询总是产生类似但不相同的场景,冲突的CMake命令等等!

我需要强制我的项目构建32位二进制文​​件,因为我必须链接一个只能作为32位的库.我根据错误消息诊断出这个错误,例如:

/usr/bin/ld: i386 architecture of input file `*external-32bit-lib*' is incompatible with i386:x86-64 output
Run Code Online (Sandbox Code Playgroud)

因此,我应该使用:

set (CMAKE_CXX_FLAGS "-m32")
Run Code Online (Sandbox Code Playgroud)

这确实改变了一些事情 - 我现在得到了几个错误:

/usr/bin/ld: i386 architecture of input file `*project-output-lib*' is incompatible with i386:x86-64 output
Run Code Online (Sandbox Code Playgroud)

并且仍然会获得外部库的相同错误.我认为这是因为-m32制作的gcc生成32位二进制文​​件,但ld仍在尝试64位输出?进一步谷歌搜索这个问题没有取得任何成功,所以如果有人能够证实我是对的,并给出正确的方法,我将非常感激!

非常感谢!

c++ gcc cmake ld 32bit-64bit

49
推荐指数
4
解决办法
6万
查看次数

如何使用linux amd64,cmake和g ++交叉编译linux x86?

每条信息都有+1,有助于完成整个画面.你不需要知道整个答案.我会同样欣赏这个拼图的各个部分.谢谢.

我即将尝试我的第一次交叉编译.我搜索了SO和网络,发现了许多信息,但我并不总是知道如何将这些部分放在一起,因为仍然有一些缺失的部分.

我的主持人:linux Kubuntu amd64.
目标:linux kubuntu x86(32位)(应该很简单,不是吗?)
工具:g ++和cmake.

这是我发现的信息:

如何使用gcc/cmake在64位Linux机器上编译32位二进制文​​件
提到导出CFLAGS = -m32.这是一件作品.

跨平台:选择使用32/64位的
数据类型提及数据类型.我可能必须在我的代码中注意这一点.

#ifdef用于32位平台
#ifdef用于32位平台
链接到以下内容,虽然我还不太清楚如何使用它:http:
//predef.sourceforge.net/prearch.html

http://ww.ubuntuforums.org/showthread.php?t=1377396
我做了:sudo apt-get install g ++ - multilib

缺件:

理想情况下,当我'make'(使用cmake)时,它应该吐出amd64二进制文件和x86二进制文件.

我的CMakeLists.txt的一部分如下所示:

add_definitions(-Wall -pthread)
add_executable (../run.amd64 user.cpp time.cpp init.cpp utils.cpp main.cpp)
target_link_libraries(../run.amd64 cppcms dbixx config++ ctemplate)
Run Code Online (Sandbox Code Playgroud)

如何引入标志-m32来创建第二个可执行文件?

我是否只想制作一个可执行文件(例如,用于测试和调试),如何告诉cmake创建一个或两个二进制文件?

此外,您可以看到我使用了一些第三方库,其中一些我必须自己编译.这是否意味着我还需要为目标主机编译每个二进制文件?有些人使用cmake,有些人使用:./ configure; 使;
如何为目标主机编译这些库(要使用的标志等)?

注意:动态链接库已经编译并安装在目标计算机上,所以也许我不需要担心这一步......我不确定:这是我遗失的部分之一......

我需要的是一种教程,或至少一些缺失的部分.我将更新这篇文章,详细介绍我取得的成就以及如何实现.

谢谢.

PS

有可能吗?

搜索更多,我发现了这个:
http://www.mail-archive.com/cmake@cmake.org/msg26265.html
"原始设计似乎不是为了windows-linux或linux-windows而设计的交叉编译."
cmake没有测试linux amd64到linux x86.

http://www.cmake.org/Wiki/CMake_Cross_Compiling#FAQ.2FPotential_Problems
"在混合的32/64位Linux安装中,交叉编译不能仅用于构建32/64位."

??

linux g++ cmake cross-compiling

26
推荐指数
4
解决办法
3万
查看次数

如何在64位Linux机器上编译32位二进制文​​件而不触及CFLAGS环境变量

解决方案

如何使用gcc/cmake在64位Linux机器上编译32位二进制文​​件

是不可能的,因为我使用第三方软件和已经使用CFLAGS变量的其他东西.我的老板说,不允许修补他们的makefile.

所以我必须找到另一种方法来强制执行它.也许有一些神奇的符号链接将调用gcc重定向到32位版本的编译器(希望不动态检测默认目标).

linux 64-bit gcc freebsd compilation

11
推荐指数
1
解决办法
2万
查看次数

在共享主机上编译32位Linux的git

我需要在廉价的共享主机上设置Git客户端,使用无名的32位Linux发行版.GCC不可用,所以我无法在服务器上编译它.我确实拥有其他2个64位Linux服务器和一台OSX笔记本电脑,我可以尝试交叉编译二进制文件.但我似乎无法正确编译它; 当我将二进制文件推送到32位服务器时,它说它无法运行可执行文件.它看起来像其他来源,比如我需要在./configure中添加"-arch i386"和/或"-m32",或者让命令工作为32位,但我想我没有正确使用它们.任何人都知道如何做到这一点,或者在哪里找到通用的32位Git二进制文件?

谢谢

linux git 32-bit compilation

7
推荐指数
2
解决办法
3692
查看次数

在64位环境中使用32位.so文件

我正在使用Ubuntu 12.04 64位,我在编译需要32位.so文件的Qt项目时遇到以下错误.

错误: skipping incompatible /opt/lib/libEposCmd.so when searching for -lEposCmd

我想用-m32选项编译这个项目,但我不知道我应该在哪里插入这个选项.

linux 64-bit x86 qt qt4

5
推荐指数
1
解决办法
1125
查看次数

Conda在64位机器上构建32位软件包

我一直在使用conda作为我的大量工作的包管理器,它确实有助于使用Python和二进制包来控制多个人的环境.它一直都是阳光和彩虹,而我的所有用户都使用64位Linux机器.

现在我需要支持一些32位机器.有没有办法在我的64位机器上构建32位版本的软件包?

我已经在SO上找到了这个答案,如何使用gcc/cmake在64位linux机器上编译32位二进制文​​件,但我无法弄清楚如何编译和上传32位和64位版本.

python linux conda

2
推荐指数
1
解决办法
1434
查看次数

你能在64位机器上编译32位Apache DSO(Oracle HTTP Server)吗?

我已将Oracle数据库和Oracle HTTP服务器安装从32位计算机迁移到64位计算机 - 两台运行Linux的计算机.Oracle数据库是64位,但(Apache)HTTP服务器是32位.

我使用了一些非Oracle DSO(mod_ntlm为一个),但每当我运行标准的"make install"类型的东西时,我最终得到一个64位模块.

是否有一种在64位计算机上编译32位Apache模块的标准方法?

linux apache oracle 32bit-64bit

1
推荐指数
1
解决办法
4027
查看次数

标签 统计

linux ×7

gcc ×3

32-bit ×2

32bit-64bit ×2

64-bit ×2

cmake ×2

compilation ×2

apache ×1

c++ ×1

conda ×1

cross-compiling ×1

freebsd ×1

g++ ×1

git ×1

ld ×1

oracle ×1

python ×1

qt ×1

qt4 ×1

x86 ×1

x86-64 ×1