Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: gcc & env. variables  (Прочитано 587 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Fullerene

  • Автор темы
  • Участник
  • *
  • Сообщений: 177
    • Просмотр профиля
gcc & env. variables
« : 22 Март 2010, 13:33:12 »
Такая фигня:
1) export LIBS="-ltest -lmopac"
2) ./configure ->
configure: error: C compiler cannot create executables
See `config.log' for more details.
3) unset LIBS
4) ./configure[/b] ->
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
..............................................
config.status: executing depfiles commands - (ОК)

Почему export LIBS="-ltest -lmopac" приводит к ошибке компилятора?

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: gcc & env. variables
« Ответ #1 : 22 Март 2010, 13:45:14 »
Да, такая вот фигня...

See `config.log' for more details.

Кстати, gcc здесь не причем.
Подозреваю, что ему сказано линковать эти библиотеки, но откуда их брать, не сказано, ключа -L с путем не хватает.
Кстати, если библиотеки динамические, то помимо -L, этот путь надо продублировать в переменной окружения LD_LIBRARY_PATH, чтобы еще и загрузчик смог их там найти.
« Последнее редактирование: 22 Март 2010, 13:54:37 от wl »
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн Fullerene

  • Автор темы
  • Участник
  • *
  • Сообщений: 177
    • Просмотр профиля
Re: gcc & env. variables
« Ответ #2 : 22 Март 2010, 14:45:11 »
Странно, что поодиночке -ltest и -lmopac работают.

1) export LIBS="-ltest"
2) ./configure -> ОК
3) export LIBS="-lmopac"
4) ./configure -> ОК


сonfig.log:
/usr/bin/ld: skipping incompatible /home1/vvc/install/1/libmopac.a when searching for -lmopac
/usr/bin/ld: cannot find -lmopac
collect2: ld returned 1 exit status  


Обе библиотеки статические (.а)
« Последнее редактирование: 22 Март 2010, 14:46:54 от Fullerene »

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: gcc & env. variables
« Ответ #3 : 22 Март 2010, 15:28:34 »
32 и 64-битные библиотеки/сборки не смешиваются?
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн Fullerene

  • Автор темы
  • Участник
  • *
  • Сообщений: 177
    • Просмотр профиля
Re: gcc & env. variables
« Ответ #4 : 22 Март 2010, 23:38:27 »
32 и 64-битные библиотеки/сборки не смешиваются?

Про библиотеки на 100% не уверен. Но если записать так:
export LIBS="-lmopac"
export LIBS="$LIBS -ltest"


то все ОК.

Оффлайн Mam(O)n

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: gcc & env. variables
« Ответ #5 : 23 Март 2010, 12:26:40 »
Про библиотеки на 100% не уверен. Но если записать так:
export LIBS="-lmopac"
export LIBS="$LIBS -ltest"

Очень интересно. Получается, от первоначального отличается лишь порядком. Т.е. export LIBS="-lmopac -ltest"

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: gcc & env. variables
« Ответ #6 : 23 Март 2010, 12:45:06 »
Очень интересно. Получается, от первоначального отличается лишь порядком. Т.е. export LIBS="-lmopac -ltest"
А, ну конечно!
Для статических библиотек важен порядок их указания в -l, иногда даже приходится повторять одну и ту же несколько раз.

http://users.actcom.co.il/~choo/lupg/tutorials/libraries/unix-c-libraries.html#deeper_linking_understanding
« Последнее редактирование: 23 Март 2010, 12:48:13 от wl »
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

 

Страница сгенерирована за 0.055 секунд. Запросов: 24.