LINUX.ORG.RU

Загадки линковки или статика vs динамика при кросс-компиляции opkg


0

0

Добрый вечер!
Видимо сегодня не мой день, но я никак не могу понять почему если я говорю
компилятору делать статическую сборку, то он все равно делает динамическую.

Подробнее:

svn checkout http://opkg.googlecode.com/svn/trunk/ opkg-read-only
cd opkg-read-only
./autogen.sh --host=arm-unknown-linux --target=arm-unknown-linux CC=«arm-android-linux-uclibcgnueabi-gcc» \
CROSS_COMPILE=«arm-android-linux-uclibcgnueabi-» CFLAGS=" -nodefaultlibs -nostdlib -static -fPIC $_XXFLAGS" \
CXXFLAGS=" -nodefaultlibs -nostdlib -static -fPIC $_XXFLAGS" \
LDFLAGS=" -nodefaultlibs -nostdlib -static -fPIC -s -L$HOME/build/cross/sys-root/usr/lib -lm -lc -liberty -lgcc" \
AR=«arm-android-linux-uclibcgnueabi-ar» AS=«arm-android-linux-uclibcgnueabi-as» \
LD=«arm-android-linux-uclibcgnueabi-ld» RANLIB=«arm-android-linux-uclibcgnueabi-ranlib» \
OBJDUMP=«arm-android-linux-uclibcgnueabi-objdump» STRIP=«arm-android-linux-uclibcgnueabi-strip» \
NM=«arm-android-linux-uclibcgnueabi-nm» CXX=«arm-android-linux-uclibcgnueabi-g++» --disable-dependency-tracking \
--with-pic cross_compiling=yes --disable-curl --disable-gpg --prefix=$HOME/build/cross/sys-root/usr \
--enable-static --disable-shared --with-gnu-ld

Вроде все отлично - делаю make
Он ругнулся пару раз (не нашел символ _start), но отработал штатно.
Две библиотеки libbb и libopkg собрал статически, все правильно, но!
opkg-cl - бинарник собрал динамически, и никак не поддается на переговоры.
Ладно, попробовал собрать руками из opkg-cl.o - скомпиленный object файл

cd src
arm-android-linux-uclibcgnueabi-ld -nodefaultlibs -nostdlib -static -s -L$HOME/build/cross/sys-root/lib \
-L$HOME/build/cross/sys-root/usr/lib -L../libopkg/.libs -L../libbb/.libs -lm -lc -liberty -lgcc -lopkg -lbb opkg-cl.o -o opkg

При этом он ругается
warning: cannot find entry symbol _start; defaulting to 00008094
opkg-cl.o: In function `args_parse':
opkg-cl.c:(.text+0x50): undefined reference to `getopt_long_only'
opkg-cl.c:(.text+0x210): undefined reference to `xstrdup'
и так далее стандартными функциями...
Но ведь у меня не только присутсвуют нужные статические библиотеки по указанным путям, но и ведь другие программы собирались нормально.

А теперь вопрос - в чем моя ошибка, либо в самостоятельной компиляции либо в опциях configure?
Я все никак не могу понять...
Спасибо заранее!

★★★★★

Ответ на: комментарий от XVilka

«прикол» именно в том, что линкеру (ld) при конфигурации исходников можно передать параметр, запрещающий статическую линковку. просмотри параметры сборки ld или не парь мозги со статикой.

sda00 ★★★
()
Ответ на: комментарий от sda00

Ну мозг со статикой парить надо потому что в целевой системе нестандартная libc.

В опциях я везде где только можно указывал статику, может ли libtool парить мозг?

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