Ссылка на __sync_fetch_and_add_4 в 32-разрядной сборке boost 1.48 не разрешена - PullRequest
0 голосов
/ 05 января 2012

Я недавно собрал 32-разрядную версию Boost 1.48 на 64-разрядной машине, используя gcc 4.5, используя следующие инструкции:

./bootstrap.sh --prefix=$INSTALL_PREFIX --exec-prefix=$INSTALL_PREFIX --with-libraries=system,filesystem,python --with-python=python2
./b2 address-model=32 architecture=x86 install

Компиляция выглядит нормально, и библиотеки правильно помещаются в папку установки. Но когда я пытаюсь связать libboost_filesystem.so с одной из моих программ, я получаю следующую ошибку:

/gpfs/wizard/flight/analysis/mori/GGSINSTALL/install/lib/libboost_filesystem.so: undefined reference to `__sync_fetch_and_add_4'
collect2: ld returned 1 exit status

Я управляю своим кодом с помощью CMake; вот флаги, которые я использую для настройки 32-битной сборки:

-DCMAKE_C_FLAGS=-m32 -DCMAKE_CXX_FLAGS=-m32

Я не знаю, делаю ли я что-то неправильно в конфигурации Boost или в конфигурации моего программного обеспечения с помощью флагов CMake, но я подозреваю, что Boost. Я нашел некоторые обсуждения по этой теме (например, неопределенная ссылка на sync_fetch_and_add_4 ), но они почти всегда относятся к другим архитектурам, таким как решения для рук или отчетов, которые я не знаю, как реализовать в форсированной сборке (например, передача a -march = i486 для gcc, как это можно сделать с помощью bjam?). Кто-нибудь может дать мне несколько советов, пожалуйста? Спасибо.

Ответы [ 2 ]

1 голос
/ 05 января 2012

Одно решение, которое я нашел, это убрать флаг architect = x86 в вызове b2. Здесь описано другое рабочее решение: Как заставить форсировать 32-битную версию с помощью gcc?

0 голосов
/ 30 июля 2012
У

возникла та же проблема, когда я скомпилировал boost 1.50.0 в Ubuntu. 10.4 lts x64

Я использовал те же флаги, что и описанные ..., как Никола Мори предложил пропустить флаг Architecture = x86 и сгенерировать libs,это сработало для меня

обратите внимание, что, однако, на Mac OS X lion вам необходимо указать архитектуру и модель адреса для компиляции в 32-битной

...