【问题标题】:Cannot link streams code with gcc无法将流代码与 gcc 链接
【发布时间】:2010-12-21 08:11:09
【问题描述】:

我在编译以下代码时遇到问题:

// writing on a text file
#include <iostream>
#include <fstream>
using namespace std;

int main () {
  ofstream myfile ("example.txt");
  if (myfile.is_open())
  {
    myfile << "This is a line.\n";
    myfile << "This is another line.\n";
    myfile.close();
  }
  else cout << "Unable to open file";
  return 0;
}

编译:

g++ -c -O2 -Wall -Wno-unused -fexceptions  -I. -I../../../stub -D_REENTRANT -D_THREAD_SAFE  -I.  -o t.o ./test.cc

g++ -o t -O2 -Wall -Wno-unused -fexceptions -Wl,-brtl -Wl,-blibpath:/lib:/usr/lib t.o -lpthreads

编译给出了一些警告:

ld: 0711-224 WARNING: Duplicate symbol: .__divdi3
ld: 0711-224 WARNING: Duplicate symbol: .__moddi3
ld: 0711-224 WARNING: Duplicate symbol: .__udivdi3
ld: 0711-224 WARNING: Duplicate symbol: .__umoddi3
ld: 0711-224 WARNING: Duplicate symbol: .__udivmoddi4
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.

生成的二进制文件似乎可以执行:

$ ./t
$ echo $?
0

输出文件已创建但为空!?!

我会非常感谢任何关于问题可能是什么的指针。

【问题讨论】:

  • 如果你编译它可以工作吗g++ test.cc -o test.run?
  • 取出未使用的库异常,并且您没有使用任何线程,那么为什么要使用线程标志进行编译?
  • 我会尝试隔离编译器和链接器选项。没有所有这些额外的选项,你的程序对我来说很好。
  • 感谢提示,这是一个库问题。清除 libpath 就可以了,程序运行了。

标签: c++ gcc gcc4 gcc3


【解决方案1】:

Libpath 设置不正确,导致问题。正确的设置应该是

LIBPATH=/opt/freeware/lib/gcc/powerpc-ibm-aix6.1.0.0/4.2.0/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    • 2016-01-18
    • 1970-01-01
    • 2021-05-14
    • 2022-10-20
    • 1970-01-01
    相关资源
    最近更新 更多