Компиляция glib с нестандартными путями - программирование
Подтвердить что ты не робот

Компиляция glib с нестандартными путями

Я пытаюсь скомпилировать glib-2.32.1, поэтому я установил libffi-3.0.1 в следующий путь:

~/localroot/lib/

и файлы заголовков находятся в:

~/localroot/lib/libffi-3.0.11/include/

Однако, когда я настраиваю:

~/tmp/build_alot/glib-2.32.1 $ ./configure --prefix=~/localroot

Я вижу следующую ошибку:

checking whether to cache iconv descriptors... no
checking for ZLIB... yes
checking for LIBFFI... no
configure: error: Package requirements (libffi >= 3.0.0) were not met:

No package 'libffi' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables LIBFFI_CFLAGS
and LIBFFI_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

Каковы правильные значения, которые мне нужно установить для LIBFFI_LIBS и LIBFFI_CFLAGS, чтобы успешно скомпилировать glib?

крошечный бит дополнительной информации:

Когда я скомпилировал libffi, я получил следующую полезную информацию:

Библиотеки были установлены в:  /Главная/Наум/localroot/Библиотека

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
    ----------------------------------------------------------------------
test -z "/home/user/localroot/share/info" || /bin/mkdir -p "/home/user/localroot/share/info"
 /usr/bin/install -c -m 644 ../doc/libffi.info '/home/nahum/localroot/share/info'
 install-info --info-dir='/home/user/localroot/share/info' '/home/user/localroot/share/info/libffi.info'
test -z "/home/user/localroot/lib/pkgconfig" || /bin/mkdir -p "/home/user/localroot/lib/pkgconfig"
 /usr/bin/install -c -m 644 libffi.pc '/home/user/localroot/lib/pkgconfig'
make[3]: Leaving directory `/home/user/tmp/build_alot/libffi-3.0.11/x86_64-unknown-linux-gnu'
make[2]: Leaving directory `/home/user/tmp/build_alot/libffi-3.0.11/x86_64-unknown-linux-gnu'
make[1]: Leaving directory `/home/user/tmp/build_alot/libffi-3.0.11/x86_64-unknown-linux-gnu'

Настройка PKG_CONFIG_PATH на /home/user/localroot/lib/pkgconfig все еще не приносит успеха.

4b9b3361

Ответ 1

на пути к просветлению...

Мне удалось скомпилировать glib с помощью

export LIBFFI_CFLAGS=-I/home/user/localroot/lib/libffi-3.0.11/include
export LIBFFI_LIBS="-L/home/user/localroot/lib -lffi"

Теперь я должен посмотреть, довольны ли зависимости на дороге, как я ее скомпилировал.

Ответ 2

Для таких, как я, которые задавались вопросом, откуда пришли флагов -I и -L и -lffi (ответ Oz123), я узнал, что их можно найти в:

/home/user/local-software/libffi-3.1/lib/pkgconfig/libffi.pc

Чтение файла дает:

...
...
Libs: -L${toolexeclibdir} -lffi
Cflags: -I${includedir}

Используйте расположение Libs и Cflags для установки переменных LIBFFI_LIBS и LIBFFI_CFLAGS, соответственно. Теперь, если вы запустите ./configure, затем make && make install, все должно работать (по крайней мере, для меня).