Невозможно связать код потоков с помощью gcc - PullRequest
0 голосов
/ 21 декабря 2010

У меня проблема с компиляцией следующего кода:

// 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

Выходной файл создан, но пустой!?!

Я был бы ОЧЕНЬ благодарен за любые указания относительно того, в чем проблемаможет быть.

1 Ответ

1 голос
/ 21 декабря 2010

Libpath был установлен неправильно, вызывая проблему.Правильная настройка должна быть

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

...