小编And*_* Ge的帖子

为什么我的Mac上编译的C++库不能在服务器上运行?

我正在为一个项目编写一个C++库.它基本上包含一个源文件.我在我的Mac上编写了源文件并用它编译g++ -c source.cpp -o source.o并创建了一个静态库ar rcs libmylib.a source.o.还有一个头文件定义了几个函数接口.

我可以在我自己的Mac上使用这个库编译程序,通过发出g++ myprogram.cpp -o myprogram -lmylib -L .它可以编译和运行没有任何错误.但是,当我简单地将静态库复制到服务器并尝试使用该库编译某些代码时,它不起作用.编译器抱怨没有定义某些函数的定义.很明显,链接器成功找到了库,但它根本找不到定义.

然后我尝试在服务器上编译库源文件并在服务器上编译我的项目.一切都很好.但是,当我将服务器上编译的库复制到我的Mac并尝试使用该库编译我的本地测试程序时,编译器投诉ld: warning: ignoring file ./libmylib.a, file was built for archive which is not the architecture being linked (x86_64): ./libmylib.a并拒绝链接.

令我困惑的是我的Mac和服务器的架构应该是相同的(aka,x86_64),但是在这两台机器上编译的相同源文件不能交换使用.这可能是什么原因?库不应该与基于相同架构的机器兼容吗?

有关系统和编译器的更多详细信息:

我的Mac:

AdvancedMage-3:encryption Andy$ uname -a
Darwin AdvancedMage-3.local 15.3.0 Darwin Kernel Version 15.3.0: Thu Dec 10 18:40:58 PST 2015; root:xnu-3248.30.4~1/RELEASE_X86_64 x86_64
AdvancedMage-3:encryption Andy$ g++ -v
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/c++/4.2.1
Apple LLVM …
Run Code Online (Sandbox Code Playgroud)

c++ linux macos gcc

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

标签 统计

c++ ×1

gcc ×1

linux ×1

macos ×1