我需要在没有 root 访问权限的 Linux 服务器上安装 PCL(点云库)。然后我下载了源代码并检查了依赖关系。现在我们开始...
这些是我发现的依赖项:
PCL - 促进 ----ZLIB ----BZIP --本征 --弗兰 ----HDF5 ----LIBUSB ------UDEV --------GLIB ----------LIBFFI ----------ZLIB --VTK
我需要从源代码编译 glib。Glib 需要 FFI 库,所以我下载了它们,编译并安装了它们
/home/franz/Downloads/libffi-3.0.13/installed
然后我设置这些变量:
LD_LIBRARY_PATH=/home/franz/Downloads/libffi-3.0.13/installed/lib LIBFFI_CFLAGS="-I/home/franz/Downloads/libffi-3.0.13/installed/lib/libffi-3.0.13/include" LIBFFI_LIBS="-lffi -L/home/franz/Downloads/libffi-3.0.13/安装/库”
然后 ./configure 和 make。我得到了这些错误:
make[4]: 进入目录`/home/franz/Downloads/glib-2.37.5/gobject' /bin/bash ../libtool --tag=CC --mode=link gcc -Wall -Wstrict-prototypes -Werror=declaration-after-statement -Werror=missing-prototypes -Werror=implicit-function-declaration -Werror=指针算法 -Werror=init-self -Werror=format-security -Werror=format=2 -Werror=missing-include-dirs -g -O2 -o gobject-query gobject-query.o ./libgobject-2.0.la ../glib/libglib-2.0.la libtool:链接:gcc -Wall -Wstrict-prototypes -Werror=declaration-after-statement -Werror=missing-prototypes -Werror=implicit-function-declaration -Werror=pointer-arith -Werror=init-self -Werror=format-安全性 -Werror=format=2 -Werror=missing-include-dirs -g -O2 -o .libs/gobject-query gobject-query.o ./.libs/libgobject-2.0.so -L/home/franz/Downloads /libffi-3.0.13/installed/lib /home/franz/Downloads/glib-2.37.5/glib/.libs/libglib-2.0.so ../glib/.libs/libglib-2.0.so -lpthread -lrt -Wl,-rpath -Wl,/home/franz/Downloads/glib-2.37.5/installed/lib ./.libs/libgobject-2.0.so:未定义对“ffi_type_void”的引用 ./.libs/libgobject-2.0.so:未定义的对“ffi_type_double”的引用 ./.libs/libgobject-2.0.so:未定义对“ffi_prep_cif”的引用 ./.libs/libgobject-2.0.so:未定义对“ffi_type_sint32”的引用 ./.libs/libgobject-2.0.so:未定义对“ffi_type_float”的引用 ./.libs/libgobject-2.0.so:未定义对“ffi_type_uint64”的引用 ./.libs/libgobject-2.0.so:未定义的对“ffi_type_sint64”的引用 ./.libs/libgobject-2.0.so:对“ffi_type_pointer”的未定义引用 ./.libs/libgobject-2.0.so:未定义的对“ffi_type_uint32”的引用 ./.libs/libgobject-2.0.so:对“ffi_call”的未定义引用
然后我看到我想要包含并在配置中使用 LIBFFI_CFLAGS/LIBS 设置的库在 make 中不存在,所以我更改了我的 CC 变量以强制我的编译器使用我的库:
LIBFFI_CFLAGS="-I/home/franz/Downloads/libffi-3.0.13/installed/lib/libffi-3.0.13/include" LIBFFI_LIBS="-lffi -L/home/franz/Downloads/libffi-3.0.13/installed/lib" ZLIB_CFLAGS="-I/home/franz/Downloads/zlib-1.2.8/installed/include" ZLIB_LIBS="-L/home/franz/Downloads/zlib-1.2.8/installed/lib" CC="gcc $LIBFFI_CFLAGS $LIBFFI_LIBS" CXX="/usr/bin/g++-4.4 $LIBFFI_CFLAGS $LIBFFI_LIBS" ./configure --prefix=`pwd`/installed
和做
通过这种方式而不是在制作过程中使用 gcc,我们将得到 gcc -I... -lffi -L... 到目前为止,这很有效。但是现在我在另一个位置遇到了同样的错误:
make[4]: 进入目录`/home/franz/Downloads/glib-2.37.5/gio' /bin/bash ../libtool --tag=CC --mode=link gcc -I/home/franz/Downloads/libffi-3.0.13/installed/lib/libffi-3.0.13/include -lffi -L/主页/franz/Downloads/libffi-3.0.13/installed/lib -Wall -Wstrict-prototypes -Werror=declaration-after-statement -Werror=missing-prototypes -Werror=implicit-function-declaration -Werror=pointer-arith - Werror=init-self -Werror=format-security -Werror=format=2 -Werror=missing-include-dirs -g -O2 -o gio-querymodules gio-querymodules.o ../glib/libglib-2.0.la 。 ./gobject/libgobject-2.0.la ../gmodule/libgmodule-2.0.la libgio-2.0.la libtool:链接:gcc -I/home/franz/Downloads/libffi-3.0.13/installed/lib/libffi-3.0.13/include -Wall -Wstrict-prototypes -Werror=declaration-after-statement -Werror=missing-原型 -Werror=implicit-function-declaration -Werror=pointer-arith -Werror=init-self -Werror=format-security -Werror=format=2 -Werror=missing-include-dirs -g -O2 -o .libs/ gio-querymodules gio-querymodules.o -L/home/franz/Downloads/libffi-3.0.13/installed/lib ../glib/.libs/libglib-2.0.so ../gobject/.libs/libgobject-2.0 .so ../gmodule/.libs/libgmodule-2.0.so ./.libs/libgio-2.0.so -L/home/franz/Downloads/zlib-1.2.8/installed/lib /home/franz/Downloads/ glib-2.37.5/gobject/.libs/libgobject-2.0.so /home/franz/Downloads/glib-2.37.5/gmodule/.libs/libgmodule-2.0.so -ldl /home/franz/Downloads/glib- 2.37.5/glib/.libs/libglib-2.0.so -lpthread -lrt /home/franz/Downloads/libffi-3.0。13/installed/lib/../lib/libffi.so -lresolv -Wl,-rpath -Wl,/home/franz/Downloads/glib-2.37.5/installed/lib -Wl,-rpath -Wl,/home /franz/Downloads/libffi-3.0.13/installed/lib/../lib ../gobject/.libs/libgobject-2.0.so:未定义对“ffi_type_void”的引用 ../gobject/.libs/libgobject-2.0.so:未定义对“ffi_type_double”的引用 ../gobject/.libs/libgobject-2.0.so:未定义对“ffi_prep_cif”的引用 ../gobject/.libs/libgobject-2.0.so:未定义对“ffi_type_sint32”的引用 ../gobject/.libs/libgobject-2.0.so:未定义对“ffi_type_float”的引用 ../gobject/.libs/libgobject-2.0.so:未定义对“ffi_type_uint64”的引用 ../gobject/.libs/libgobject-2.0.so:未定义对“ffi_type_sint64”的引用 ../gobject/.libs/libgobject-2.0.so:未定义对“ffi_type_pointer”的引用 ../gobject/.libs/libgobject-2.0.so:未定义对“ffi_type_uint32”的引用 ../gobject/.libs/libgobject-2.0.so:未定义对“ffi_call”的引用
问题是在这种情况下库是存在的(你可以看到-lffi -L<ffi_libs_path>
但错误看起来和以前一样)。
知道如何完成这项工作吗?我再说一遍,我无法安装库,因为我没有 root 访问权限。任何建议将不胜感激。