gpt4 book ai didi

c++ - GCC -m32 标志 :/usr/bin/ld: skipping incompatible

转载 作者:可可西里 更新时间:2023-11-01 15:59:34 31 4
gpt4 key购买 nike

在 64 位主机上,我尝试使用 -m32 选项构建共享库。这些库是否可以与常规 64 位库链接?

我正在做这样的事情:

g++ -m32 -shared source.cpp -l 64_bit_library.so -o 32_bit_library.so

并得到这样的错误信息:

/usr/bin/ld: skipping incompatible 64_bit_library.so

所以我的问题是:如何在 64 位主机上编译 64_bit_library.so32_bit_library.so,使 32_bit_library.so 要链接到 64_bit_library.so

最佳答案

无法将 32 位应用程序链接到 64 位库,反之亦然。问题是指针和类型通常不能在它们之间传递。通常,解决方法是生成其他大小的子进程并使用 IPC 与该进程通信。

这样想:如果我有一个 C 普通函数:

extern void foo(void*); 

如果它在 64 位库中,我尝试从 32 位库中调用它,指针的另一半来自哪里?

相反,如果它在 32 位库中并且我从 64 位应用程序调用它,指针的另一半会发生什么情况,我必须丢失才能调用它?

关于c++ - GCC -m32 标志 :/usr/bin/ld: skipping incompatible,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4052542/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com