статическая компиляция не помогает основанию библиотеки

Для выполнения какой-либо задачи по спасению мне нужно скомпилировать extundelete и некоторые другие инструменты с общими библиотеками в двоичном файле.

Я искал опции configure и make, а также записи AskUbuntu и т. Д. Я нашел предложение использовать опцию -strict (один дефис). К сожалению, я не смог заставить его работать.

Я делал обычные движения apt source install extundelete, ./configure, make, конечно же, добавляя '-static' к обоим ./configure и make. Ничего не делать, не работать.

Наконец, я получил некоторую подсказку, поместив '-static' в переменную окружения LDFLAGS. Теперь, по крайней мере, у меня есть конкретное сообщение об ошибке!

./configure LDFLAGS=-static

Configuring extundelete 0.2.4
configure: error: Can't find ext2fs library

Все найденные мной предложения указывают на отсутствие пакетов e2fslibs-dev и / или libext2fs-dev. После установки этих пакетов сообщение об ошибке остается прежним. Can't find ext2fs library

На всякий случай я проверил содержимое пакетов и, по сути, есть библиотека ext2fs, или так может показаться.

dpkg -L libext2fs-dev | grep ext2fs
/usr/include/ext2fs
/usr/include/ext2fs/bitops.h
/usr/include/ext2fs/ext2_err.h
/usr/include/ext2fs/ext2_ext_attr.h
/usr/include/ext2fs/ext2_fs.h
/usr/include/ext2fs/ext2_io.h
/usr/include/ext2fs/ext2_types.h
/usr/include/ext2fs/ext2fs.h
/usr/include/ext2fs/ext3_extents.h
/usr/include/ext2fs/qcow2.h
/usr/include/ext2fs/tdb.h
/usr/lib/x86_64-linux-gnu/libext2fs.a
/usr/lib/x86_64-linux-gnu/pkgconfig/ext2fs.pc
/usr/lib/x86_64-linux-gnu/libext2fs.so
/usr/share/doc/libext2fs-dev

На данный момент мои хакерские ресурсы исчерпаны. Любая помощь будет очень кстати. Танки заранее.

0
задан 16 August 2019 в 05:54

1 ответ

Если Вы посмотрите config.log файл, то Вы будете, вероятно, видеть, что, хотя сообщение об ошибке Can't find ext2fs library, фактическая ошибка связана с неопределенными ссылками в libext2fs.a

configure:5298: checking for ext2fs_bmap in -lext2fs
configure:5323: gcc -o conftest   -static conftest.c -lext2fs   >&5
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libext2fs.a(alloc_stats.o): In function `ext2fs_inode_alloc_stats2':
(.text+0x106): undefined reference to `com_err'

, я смог заставить это настраивать и создавать использование

./configure CFLAGS=-pthread LDFLAGS='-pthread -static' LIBS=-lcom_err
make

т.е.

$ file -b ./src/extundelete
ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, for GNU/Linux 3.2.0, BuildID[sha1]=a03a7d251e42c8a9182b062841f81e5d1cccc7c7, with debug_info, not stripped

Примечание, что я не пытался на самом деле выполнить его .

, Если Вы опускаете эти -pthread опции, это, вероятно, даст другие ошибки о неразрешенных семафорных прототипах sem_wait и т.д. , я понятия не имею, является ли это "правильным" разрешением .

1
ответ дан 23 October 2019 в 05:42

Другие вопросы по тегам:

Похожие вопросы: