Связь с stdc ++ с помощью CMake и GCC 4.1.2 - PullRequest
1 голос
/ 05 июля 2011

Я занимаюсь разработкой библиотеки и должен убедиться, что она компилируется с 4.1.2 (я знаю, это не доставляет мне удовольствия). Итак, на компьютере Fedora 14 я скачал, скомпилировал и установил GCC41.

Теперь в CMake я меняю только следующие переменные CMAKE_CXX_COMPILER = / Opt / gcc41 / bin / C ++ 41 CMAKE_C_COMPILER = / Opt / gcc41 / бен / gcc41

Отлично компилируется, но, похоже, использует неверную версию стандартной библиотеки. Ошибки, которые я получаю, выглядят так:

/opt/gcc41/bin/c++41 -Wall -Wold-style-cast -Wsign-compare -Wnon-virtual-dtor -Woverloaded-virtual -Wno-long-long -Wno-old-style-cast -g3 -O2 -ffast-math -mmmx -msse -msse2 -msse3 <OBJECT_FILES> -o <EXE_NAME> -rdynamic -lfreeimage -lcxcore -lcv -lml -lhighgui -lcvaux -llapack -lpthread -ltiff -lSM -lICE -lX11 -lXext -lrt -lz -ldl -ltiff  -lSM -lICE -lX11 -lXext -lrt -lz -ldl -lusb


In function `operator<< <std::char_traits<char> >':
/usr/lib/gcc/x86_64-redhat-linux/4.5.1/../../../../include/c++/4.5.1/ostream:513: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, long)'

По-видимому, он извлекает include из ... / include / c ++ / 4.5.1 /, но я не вижу, на какую версию библиотеки он ссылается.

Есть ли способ, которым я могу это контролировать?

Ответы [ 2 ]

2 голосов
/ 06 июля 2011

Когда вы конфигурируете с помощью CMake, укажите компиляторы перед , которые вы конфигурируете в первый раз.Используйте переменные среды CC и CXX для указания компиляторов C и C ++:

export CC=/opt/gcc41/bin/gcc41
export CXX=/opt/gcc41/bin/c++41
cmake ../source
make

Начните с чистого / пустого дерева сборки, чтобы избежать устаревших записей кэша с первого запуска CMake с другим компилятором.(Вы не можете изменить компилятор после первого запуска CMake, не запустив заново ...)

0 голосов
/ 06 июля 2011

Установите версию gcc по умолчанию в Fedora:

./configure CC=/path/to/gcc/of/your/choice
...