2017-03-14 2 views
2
내가하려고

컴파일하는 동안 인해 libusb 의존성크로스 컴파일 - 경고 : libudev.so.1가

CGO_ENABLED=1와 라즈베리 파이에 대한 Golang 응용 프로그램을 크로스 컴파일을 찾을 수 없습니다 내가 얻을 오류 : 나는 행운으로 아래 명령의 여러 변화를 시도

arm-linux-gnueabihf/bin/ld: warning: libudev.so.1, needed by /usr/lib/arm-linux-gnueabihf/libusb-1.0.so, not found (try using -rpath or -rpath-link) 

:

CGO_ENABLED=1 GOARCH=arm GOARM=7 PKG_CONFIG_LIBDIR=/usr/lib/arm-linux-gnueabihf/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ go build -x -ldflags '-extld=arm-linux-gnueabihf-gcc -rpath=/usr/lib/arm-linux-gnueabihf -L/usr/lib/arm-linux-gnueabihf -ludev' 

나는로 빌드를 실행하면 34,431,플래그 나는 자세한 출력을 얻을, 그것은 일종의 src/net 패키지를 구축하는 동안의 실패처럼 보이는 :

cd /usr/local/go/src/net 
/usr/local/go/pkg/tool/linux_amd64/cgo -dynpackage net -dynimport $WORK/net/_obj/_cgo_.o -dynout $WORK/net/_obj/_cgo_import.go 
arm-linux-gnueabihf-gcc -I . -fPIC -marm -pthread -fmessage-length=0 -fdebug-prefix-map=$WORK=/tmp/go-build -gno-record-gcc-switches -o $WORK/net/_obj/_all.o $WORK/net/_obj/_cgo_export.o $WORK/net/_obj/cgo_linux.cgo2.o $WORK/net/_obj/cgo_resnew.cgo2.o $WORK/net/_obj/cgo_socknew.cgo2.o $WORK/net/_obj/cgo_unix.cgo2.o -g -O2 -Wl,-r -nostdlib -Wl,--build-id=none 
/usr/local/go/pkg/tool/linux_amd64/compile -o $WORK/net.a -trimpath $WORK -p net -buildid 9e58c94d1ddeba63666a35ecee9409056baf5d3c -D _/usr/local/go/src/net -I $WORK -pack ./addrselect.go ./conf.go ./dial.go ./dnsclient.go ./dnsclient_unix.go ./dnsconfig_unix.go ./dnsmsg.go ./fd_mutex.go ./fd_poll_runtime.go ./fd_posix.go ./fd_unix.go ./file.go ./file_unix.go ./hook.go ./hook_cloexec.go ./hook_unix.go ./hosts.go ./interface.go ./interface_linux.go ./ip.go ./iprawsock.go ./iprawsock_posix.go ./ipsock.go ./ipsock_posix.go ./lookup.go ./lookup_unix.go ./mac.go ./net.go ./nss.go ./parse.go ./pipe.go ./port.go ./port_unix.go ./sendfile_linux.go ./sock_cloexec.go ./sock_linux.go ./sock_posix.go ./sockopt_linux.go ./sockopt_posix.go ./sockoptip_linux.go ./sockoptip_posix.go ./tcpsock.go ./tcpsock_posix.go ./tcpsockopt_posix.go ./tcpsockopt_unix.go ./udpsock.go ./udpsock_posix.go ./unixsock.go ./unixsock_posix.go ./writev_unix.go $WORK/net/_obj/_cgo_gotypes.go $WORK/net/_obj/cgo_linux.cgo1.go $WORK/net/_obj/cgo_resnew.cgo1.go $WORK/net/_obj/cgo_socknew.cgo1.go $WORK/net/_obj/cgo_unix.cgo1.go $WORK/net/_obj/_cgo_import.go 
# github.com/resin-io/edge-node-manager/vendor/github.com/kylelemons/gousb/usb 
/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: warning: libudev.so.1, needed by /usr/lib/arm-linux-gnueabihf/libusb-1.0.so, not found (try using -rpath or -rpath-link) 
/usr/lib/arm-linux-gnueabihf/libusb-1.0.so: undefined reference to `[email protected]_183' 
/usr/lib/arm-linux-gnueabihf/libusb-1.0.so: undefined reference to `[email protected]_183' 
/usr/lib/arm-linux-gnueabihf/libusb-1.0.so: undefined reference to `[email protected]_183' 
/usr/lib/arm-linux-gnueabihf/libusb-1.0.so: undefined reference to `[email protected]_183' 
/usr/lib/arm-linux-gnueabihf/libusb-1.0.so: undefined reference to `[email protected]_183' 
/usr/lib/arm-linux-gnueabihf/libusb-1.0.so: undefined reference to `[email protected]_183' 
/usr/lib/arm-linux-gnueabihf/libusb-1.0.so: undefined reference to `[email protected]_183' 
/usr/lib/arm-linux-gnueabihf/libusb-1.0.so: undefined reference to `[email protected]_183' 
/usr/lib/arm-linux-gnueabihf/libusb-1.0.so: undefined reference to `[email protected]_183' 
/usr/lib/arm-linux-gnueabihf/libusb-1.0.so: undefined reference to `[email protected]_183' 
/usr/lib/arm-linux-gnueabihf/libusb-1.0.so: undefined reference to `[email protected]_183' 
/usr/lib/arm-linux-gnueabihf/libusb-1.0.so: undefined reference to `[email protected]_183' 
/usr/lib/arm-linux-gnueabihf/libusb-1.0.so: undefined reference to `[email protected]_183' 
/usr/lib/arm-linux-gnueabihf/libusb-1.0.so: undefined reference to `[email protected]_183' 
/usr/lib/arm-linux-gnueabihf/libusb-1.0.so: undefined reference to `[email protected]_183' 
/usr/lib/arm-linux-gnueabihf/libusb-1.0.so: undefined reference to `[email protected]_183' 
/usr/lib/arm-linux-gnueabihf/libusb-1.0.so: undefined reference to `[email protected]_183' 
/usr/lib/arm-linux-gnueabihf/libusb-1.0.so: undefined reference to `[email protected]_183' 
/usr/lib/arm-linux-gnueabihf/libusb-1.0.so: undefined reference to `[email protected]_2.17' 
/usr/lib/arm-linux-gnueabihf/libusb-1.0.so: undefined reference to `[email protected]_183' 
/usr/lib/arm-linux-gnueabihf/libusb-1.0.so: undefined reference to `[email protected]_183' 
collect2: error: ld returned 1 exit status 

이상한 것은 컴파일러가 /usr/lib/arm-linux-gnueabihf/libusb-1.0.so을 찾을 수 있습니다 나는 그 디렉토리에 ls -al을 할 경우 libudev.so도있는 것입니다 . /lib/arm-linux-gnueabihf/

lrwxrwxrwx 1 root root  41 Jan 7 04:14 libudev.so -> /lib/arm-linux-gnueabihf/libudev.so.1.5.0 
-rw-r--r-- 1 root root 105464 Jun 16 2014 libusb-1.0.a 
lrwxrwxrwx 1 root root  44 Jun 16 2014 libusb-1.0.so -> /lib/arm-linux-gnueabihf/libusb-1.0.so.0.1.0 
drwxr-xr-x 2 root root 4096 Mar 15 14:48 pkgconfig 

/usr/lib/arm-linux-gnueabihf/pkgconfig에 다시 연결 두 파일 모두 포함 : 마지막으로

-rw-r--r-- 1 root root 513 Jan 7 04:13 libudev.pc 
-rw-r--r-- 1 root root 332 Jun 16 2014 libusb-1.0.pc 

, file 모두 libusblibudev 올바른 구조로 보여줍니다 실행 :

/lib/arm-linux-gnueabihf/libusb-1.0.so.0.1.0: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, BuildID[sha1]=7d7b487c91042c1f254b39516b4aeabedfb828fc, stripped 
/lib/arm-linux-gnueabihf/libudev.so.1.5.0: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, BuildID[sha1]=334f4f0d8b1222a324ccd0827c1613fdd1e2ec15, stripped 
+0

'CC_FOR_TARGET'와 (과)'CXX_FOR_TARGET'을 (를) 사용해 보셨나요? – JimB

+0

@JimB 같은 오류 –

+0

'-x'를 사용하여 컴파일러 호출이 모두 예상대로 수행되도록 할 수 있습니다. – JimB

답변

0

libudev의 경로 .so.1은 오류입니다.

그것은 다음 디렉토리 중 하나에 있어야한다 :

./arm-linux-gnueabihf/lib 
./arm-linux-gnueabihf/libc/lib 
./arm-linux-gnueabihf/libc/usr/lib 

하지만 난 잘되는 디렉토리 잊지 죄송합니다. 따라서 libudev.so.1을 디렉토리로 복사 해보십시오.

+1

그래, 도움이되지 않았다. 감사 –