编译 libgphoto2 时出现问题
Problems while compiling libgphoto2
我正在尝试获取最新版本的 libgphoto2 (2.5.12) 和 gphoto2 (2.5.11) 以在 Debian Jessie 上运行。我从 git 下载并提取了源文件,然后按照安装说明进行操作:
autoreconf --install --symlink
./configure --prefix=/usr/local
配置工作正常,没有任何重大问题。我唯一注意到的是它提到 "libusb-1.0 no" 但 "libusb yes"。我尝试重新安装 libusb-1.0-0(-dev),但没有任何变化。
以下是 make 输出的节选:
make[4]: Entering directory '/home/max/Downloads/libgphoto2-2.5.12/libgphoto2_port'
/bin/bash ./libtool --tag=CC --mode=link gcc -g -O2 -Wall -Wmissing-declarations -Wmissing-prototypes -module -no-undefined -avoid-version -export-dynamic -export-symbols ./iolib.sym -rpath '/usr/local/lib/libgphoto2_port/0.12.0' -o usb1.la libusb1/usb1_la-libusb1.lo ./libgphoto2_port/libgphoto2_port.la -L/usr/local/lib -lusb-1.0 -lpthread
libtool: link: rm -fr .libs/usb1.ver
libtool: link: echo "{ global:" > .libs/usb1.ver
libtool: link: cat ./iolib.sym | sed -e "s/\(.*\)/;/" >> .libs/usb1.ver
libtool: link: echo "local: *; };" >> .libs/usb1.ver
libtool: link: gcc -shared -fPIC -DPIC libusb1/.libs/usb1_la-libusb1.o -Wl,-rpath -Wl,/home/max/Downloads/libgphoto2-2.5.12/libgphoto2_port/libgphoto2_port/.libs ./libgphoto2_port/.libs/libgphoto2_port.so -L/usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/libltdl.so -ldl -L/usr/local/lib /usr/local/lib/libusb-1.0.a -ludev -lpthread -g -O2 -pthread -Wl,-soname -Wl,usb1.so -Wl,-version-script -Wl,.libs/usb1.ver -o .libs/usb1.so
/usr/bin/ld: /usr/local/lib/libusb-1.0.a(libusb_1_0_la-core.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libusb-1.0.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
Makefile:820: recipe for target 'usb1.la' failed
make[4]: *** [usb1.la] Error 1
...并停下来。我根本不知道该怎么做,因为 gcc 选项中提到了“-fPIC”。
如果我能给你进一步的信息,请告诉我。
我通过手动编译安装新版本的libusb1解决了这个问题。从 here 下载它,然后按照说明中的说明配置、制作和安装。至少对我来说有用。
我正在尝试获取最新版本的 libgphoto2 (2.5.12) 和 gphoto2 (2.5.11) 以在 Debian Jessie 上运行。我从 git 下载并提取了源文件,然后按照安装说明进行操作:
autoreconf --install --symlink
./configure --prefix=/usr/local
配置工作正常,没有任何重大问题。我唯一注意到的是它提到 "libusb-1.0 no" 但 "libusb yes"。我尝试重新安装 libusb-1.0-0(-dev),但没有任何变化。
以下是 make 输出的节选:
make[4]: Entering directory '/home/max/Downloads/libgphoto2-2.5.12/libgphoto2_port'
/bin/bash ./libtool --tag=CC --mode=link gcc -g -O2 -Wall -Wmissing-declarations -Wmissing-prototypes -module -no-undefined -avoid-version -export-dynamic -export-symbols ./iolib.sym -rpath '/usr/local/lib/libgphoto2_port/0.12.0' -o usb1.la libusb1/usb1_la-libusb1.lo ./libgphoto2_port/libgphoto2_port.la -L/usr/local/lib -lusb-1.0 -lpthread
libtool: link: rm -fr .libs/usb1.ver
libtool: link: echo "{ global:" > .libs/usb1.ver
libtool: link: cat ./iolib.sym | sed -e "s/\(.*\)/;/" >> .libs/usb1.ver
libtool: link: echo "local: *; };" >> .libs/usb1.ver
libtool: link: gcc -shared -fPIC -DPIC libusb1/.libs/usb1_la-libusb1.o -Wl,-rpath -Wl,/home/max/Downloads/libgphoto2-2.5.12/libgphoto2_port/libgphoto2_port/.libs ./libgphoto2_port/.libs/libgphoto2_port.so -L/usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/libltdl.so -ldl -L/usr/local/lib /usr/local/lib/libusb-1.0.a -ludev -lpthread -g -O2 -pthread -Wl,-soname -Wl,usb1.so -Wl,-version-script -Wl,.libs/usb1.ver -o .libs/usb1.so
/usr/bin/ld: /usr/local/lib/libusb-1.0.a(libusb_1_0_la-core.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libusb-1.0.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
Makefile:820: recipe for target 'usb1.la' failed
make[4]: *** [usb1.la] Error 1
...并停下来。我根本不知道该怎么做,因为 gcc 选项中提到了“-fPIC”。
如果我能给你进一步的信息,请告诉我。
我通过手动编译安装新版本的libusb1解决了这个问题。从 here 下载它,然后按照说明中的说明配置、制作和安装。至少对我来说有用。