все.gcc-4.8.2 не связывает pthread
Компиляция простых вещей с использованием gcc toolchain в течение нескольких лет, сегодня я столкнулся с любопытным явлением.
Я установил Kubuntu 14.04 на обычный настольный компьютер i686 с gcc 4.8.2 в нем. Но затем, пытаясь построить некоторые хорошо закодированные материалы, вытащенные из моего локального хранилища, я столкнулся с тоннами сообщений «неопределенной ссылки на». Код компилируется, ссылки и работает хорошо под Ubuntu 11.04/gcc 4.5.2. Я проверил процесс связывания (на -Wl, - verbose to gcc), подумайте, что это работает. Он находит все библиотеки, которые я указываю в команде link. objdump -t myLib.so содержит именно те символы, которые я ожидал бы - но компоновщик их не видит.
Проверка библиотеки pthread также содержит соответствующие символы, за исключением того, что они имеют суффикс @GLIBC .... До сих пор не проверял уловные ссылки/загрузчика.
Образец как
#include <stdio.h>
#include <unistd.h>
#include <pthread.h>
static void *fooo (void *xxx) {
char *txt = (char*)xxx;
printf("My job is to print this :'%s'. Bye now!\n", txt);
return 0;
}
int main (int argc, char *argv[]) {
pthread_t thd;
pthread_create(&thd, NULL, fooo, "A POSIX thread");
sleep(1);
return 0;
}
работает очень хорошо на старой системе просто говоря
НКУ -l fooo.c потоковой & & ./a.out
но прерывается на этапе соединения с 4.8.2.
Любая идея была бы очень желанной.
оГО
Можете ли вы добавить сообщение об ошибке – sfrehse
возможного дубликат [порядка Linker - GCC] (http://stackoverflow.com/questions/45135/linker-order-gcc) –
@JoachimPileborg Я предполагаю, что с тех пор, как только библиотека связана с программой. Нам определенно нужно точное сообщение об ошибке. – sfrehse