Для выполнения какой-либо задачи по спасению мне нужно скомпилировать 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
На данный момент мои хакерские ресурсы исчерпаны. Любая помощь будет очень кстати. Танки заранее.
Если Вы посмотрите 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
и т.д. , я понятия не имею, является ли это "правильным" разрешением .