LINUX.ORG.RU

Сборка из исходников: то видятся, то не видятся либы в /usr/lib


0

0

Здравствуйте!

Собирал я сейчас небольшую программку из исходников (http://interreality.org/~tetron/technology/joy2key/joy2key-1.6.tar.gz). И очень странное поведение наблюдаю. Все действия что здесь описаны делаются от обычного пользователя (не от рута).

Даю команды

./configure
make
Мне в ответ ошибки
gcc  -g -O2   -o joy2key  joy2key.o -L -lX11
joy2key.o: In function `sendkey':
/home/xi/work/ubuntu_compilpro/joy2key-1.6.1/joy2key.c:798: undefined reference to `XSendEvent'
joy2key.o: In function `repeat_handler':
/home/xi/work/ubuntu_compilpro/joy2key-1.6.1/joy2key.c:766: undefined reference to `XFlush'
Понятно, в опции -L пусто. Смотрю хелп по configure, там есть флаг --libdir. Даю тогда такие команды
./configure --libdir=/usr/lib
make
Проект собирается без ошибок.

А дальше начинается интересное. Правлю *.c исходник, даю команду

make
И опять получаю ошибки
gcc  -g -O2   -o joy2key  joy2key.o -L -lX11
joy2key.o: In function `sendkey':
/home/xi/work/ubuntu_compilpro/joy2key-1.6.1/joy2key.c:815: undefined reference to `XSendEvent'
joy2key.o: In function `repeat_handler':
/home/xi/work/ubuntu_compilpro/joy2key-1.6.1/joy2key.c:783: undefined reference to `XFlush'
Очень интересно, почему опять в опции -L пусто? Хорошо, переконфигурирую
./configure --libdir=/usr/lib
и снова собираю
make
В ответ опять ошибки
gcc  -g -O2   -o joy2key  joy2key.o -L -lX11
joy2key.o: In function `sendkey':
/home/xi/work/ubuntu_compilpro/joy2key-1.6.1/joy2key.c:815: undefined reference to `XSendEvent'
joy2key.o: In function `repeat_handler':
/home/xi/work/ubuntu_compilpro/joy2key-1.6.1/joy2key.c:783: undefined reference to `XFlush'
Фига се, очень интересно. Почему в первый раз сработало указание опции, второй раз нет???

Благо, проект из одного файла всего. Собираю его напрямую (обратите внимание, опцию -lX11 не указываю)

gcc  -g -O2   -o joy2key  joy2key.o -L/usr/lib
проект собрался. Хорошо думаю, буду напрямую собирать. Снова правлю c-файл, даю ту же команду
gcc  -g -O2   -o joy2key  joy2key.o -L/usr/lib
И получаю ошибки
joy2key.o: In function `sendkey':
/home/xi/work/ubuntu_compilpro/joy2key-1.6.1/joy2key.c:815: undefined reference to `XSendEvent'
joy2key.o: In function `repeat_handler':
/home/xi/work/ubuntu_compilpro/joy2key-1.6.1/joy2key.c:783: undefined reference to `XFlush'
Да что это за мазафака? Только что собирался! Хорошо, тогда даю команду
gcc  -g -O2   -o joy2key  joy2key.o -lX11
Думал, щас будет та же ошибка, и нужно будет дописать -L/usr/lib. Так нет же, исходник собрался! Ну предположим, что опция -L не добавляет пути поиска библиотек, а заменяет, и при «пустом» -L библиотеки не найдутся.

Но остаются открытыми вопросы

1. Почему один раз сработали, а потом перестали срабалывать команды "./configure --libdir=/usr/lib" и «make» ?

2. Почему одинраз работает, потом не работает команда «gcc -g -O2 -o joy2key joy2key.o -L/usr/lib» ?

PS: Изменения в *.c файле были просто отладочными - добавлял printf() в некоторые места.


Makefile.am:

joy2key_LDADD = @X_Stuff@

configure.ac

AC_DEFINE(ENABLE_X) export X_Stuff="-L$x_libraries -lX11")

Makefile:

X_Stuff = -LNONE -lX11

попробуй так же на бубунте собирается

dimon555 ★★★★★
()

gcc -g -O2 -o joy2key joy2key.o -L -lX11
joy2key.o: In function `sendkey':
/home/darkelf/proga_test/joy2key-1.6.1/joy2key.c:798: undefined reference to `XSendEvent'


gcc -g -O2 -o joy2key joy2key.o -LNONE -lX11

всё ОК

dimon555 ★★★★★
()

make clean, и то это не всегда помогает. Помню xmms собирал лет 7 назад, так там пришлось сырцы заново распаковывать ибо что-то где-то закэшировалось.

true_admin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.