如何指定运行时动态库.so的链接地址?-L, -Xlinker, -Wl,-rpath

本文详细介绍了Linux环境下GCC编译链接动态库的两个阶段:编译时链接和运行时链接。在编译时链接,系统会根据-L指定的路径寻找库文件;运行时链接则直接在/lib/目录下查找。为了指定运行时动态库的链接地址,可以使用-Wl,-rpath选项。示例中展示了如何使用GCC编译可执行文件并链接动态库,同时提到了-L和-rpath的使用场景和注意事项。

gcc编译链接动态库.so的两个链接过程

请添加图片描述

在 linux下gcc编译链接动态库有两个链接过程:

  1. 编译时链接
  2. 运行时链接

编译时链接:系统会优先从-L指定的路径查找库文件,若没有则从/lib/下查找,所以如果/lib/下面有所需静态库文件则-L可省略,链接之后的文件会记住动态库里面相应的函数地址

运行时链接:系统会直接在/lib/下查找所需动态库文件,若没有则运行报错,找到后将相应函数定义链接进来然后执行

所以实际上用-L指定动态库文件路径只能保证编译通过,是否能执行还是得看/lib/下面有没有该库文件

如何指定运行时动态库.so的链接地址?

若采用隐式链接编译可执行程序时,需要在编译时为可执行程序指定运行时动态库搜索地址,即利用rpath选项来告诉链接器在程序执行时到哪里去找它依赖的动态库。例子如下:-Wl,-rpath,<path/to/lib>-Wl,rpath = <path/to/lib>

sc:
	gcc -O2 -mcmodel=large -c $(CFLAGS) -I./include ./libsc.cpp -Os -D_FX_OS_=_FX_LINUX_DESKTOP_
	@-mkdir -p ./scanner/obj
	@mv *.o ./scanner/obj
	@-mkdir -p ./scanner/obj
	gcc -O2 -mcmodel=large -fPIC -shared -o ./libsc.so ./scanner/obj/*.o -L./scanner/winmage  -Xlinker "-(" -Wl,-rpath=./scanner/winmage -lwinmage -Xlinker "-)"  -lz -ldl
	rm -rf ./scanner/obj

	gcc -Wall demosc.c -ldl -o demosc
	./demosc

参考:
关于linux下链接动态库.so文件时时因编译时链接跟运行时链接而出错的一些问题,以及-L -l的意义

指定运行时动态库搜索位置:-rpath链接指令的正确用法(相对路径or绝对路径)

make[1]: 进入目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver” *** *** Making pcan driver in chardev mode *** *** Host OS Release=Ubuntu v22.04 *** Host machine kernel version=6.8.0-87-generic *** Driver kernel version=6.8.0-87-generic (6.8.0) *** Path to kernel sources=/usr/src/linux-headers-6.8.0-87-generic *** use KBUILD=yes *** use DKMS= *** x86_64-linux-gnu-gcc-12 version=12 *** gcc versions detected on this host: *** /usr/bin/gcc-11 /usr/bin/gcc-12 *** make -C /usr/src/linux-headers-6.8.0-87-generic EXTRA_CFLAGS="-I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver -DNO_DEBUG -DMODVERSIONS -DNO_PARPORT_SUBSYSTEM -DUSB_SUPPORT -DPCI_SUPPORT -DPCIEC_SUPPORT -DISA_SUPPORT -DNO_DONGLE_SUPPORT -DNO_PCCARD_SUPPORT -DNO_NETDEV_SUPPORT -DNO_RT -Wno-date-time" V=0 modules M=/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver make[2]: 进入目录“/usr/src/linux-headers-6.8.0-87-generic” CC [M] /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver/src/pcan_main.o CC [M] /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver/src/pcan_fops.o CC [M] /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver/src/pcan_fifo.o CC [M] /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver/src/pcan_filter.o CC [M] /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver/src/pcan_parse.o CC [M] /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver/src/pcan_sja1000.o CC [M] /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver/src/pcan_common.o CC [M] /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver/src/pcan_timing.o CC [M] /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver/src/pcanfd_core.o CC [M] /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver/src/pcanfd_ucan.o CC [M] /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver/src/pcan_usb_core.o CC [M] /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver/src/pcan_usb.o CC [M] /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver/src/pcan_usbpro.o CC [M] /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver/src/pcanfd_usb.o CC [M] /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver/src/pcan_pci.o CC [M] /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver/src/pcanfd_pci.o CC [M] /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver/src/pcan_pci_spi.o CC [M] /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver/src/pcan_pciec.o CC [M] /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver/src/pcan_isa.o LD [M] /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver/pcan.o MODPOST /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver/Module.symvers CC [M] /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver/pcan.mod.o LD [M] /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver/pcan.ko BTF [M] /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver/pcan.ko Skipping BTF generation for /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver/pcan.ko due to unavailability of vmlinux make[2]: 离开目录“/usr/src/linux-headers-6.8.0-87-generic” make[1]: 离开目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver” make[1]: 进入目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/lib” *** *** Making pcan libraries *** *** x86_64-linux-gnu-gcc-12 version: 12 *** x86_64-linux-gnu-gcc-12 -DNO_RT -I. -I../driver -fPIC -Wall -Wcast-align -Wredundant-decls -DPCANFD_OLD_STYLE_API -c src/libpcan.c -o obj/libpcan.o x86_64-linux-gnu-gcc-12 -shared -Wl,-soname,libpcan.so -o lib/libpcan.so.6 obj/libpcan.o cd lib/; ln -sf libpcan.so.6 libpcan.so x86_64-linux-gnu-gcc-12 -DNO_RT -I. -I../driver -fPIC -Wall -Wcast-align -Wredundant-decls -DPCANFD_OLD_STYLE_API -c src/libpcanfd.c -o obj/libpcanfd.o x86_64-linux-gnu-gcc-12 -shared -Wl,-soname,libpcanfd.so -o lib/libpcanfd.so.8 obj/libpcanfd.o cd lib/; ln -sf libpcanfd.so.8 libpcanfd.so ar rcs lib/libpcanfd.a obj/libpcanfd.o Info: only 64-bit version of libpcan can be built. 32-bit version of libpcan can't because the 32-bit version of libc seems not being installed... make[1]: 离开目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/lib” make[1]: 进入目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/test” *** *** Making example and test programs *** *** x86_64-linux-gnu-gcc-12 version: 12 *** x86_64-linux-gnu-gcc-12 -DNO_RT -I. -I../lib -I../driver -g src/receivetest.c src/common.c -lpcanfd -L../lib/lib -Wl,-rpath ../lib/lib -o receivetest x86_64-linux-gnu-g++ -DNO_RT -I. -I../lib -I../driver -g src/transmitest.cpp src/common.c src/parser.cpp -lstdc++ -lpcanfd -L../lib/lib -Wl,-rpath ../lib/lib -o transmitest x86_64-linux-gnu-gcc-12 -DNO_RT -I. -I../lib -I../driver -g src/bitratetest.c src/common.c -lpcanfd -L../lib/lib -Wl,-rpath ../lib/lib -o bitratetest x86_64-linux-gnu-g++ -DNO_RT -I. -I../lib -I../driver -g src/filtertest.cpp src/common.c -lstdc++ -lpcanfd -L../lib/lib -Wl,-rpath ../lib/lib -o filtertest x86_64-linux-gnu-gcc-12 -DNO_RT -I. -I../lib -I../driver -g src/pcanfdtst.c -lpcanfd -L../lib/lib -Wl,-rpath ../lib/lib -lpthread -o pcanfdtst x86_64-linux-gnu-gcc-12 -DNO_RT -I. -I../lib -I../driver -g src/pcan-settings.c -lpopt -lpcanfd -L../lib/lib -Wl,-rpath ../lib/lib -g -o pcan-settings x86_64-linux-gnu-gcc-12 -DNO_RT -I. -I../lib -I../driver -g src/receivetest_posix.c src/common.c -lpcanfd -L../lib/lib -Wl,-rpath ../lib/lib -lpthread -o receivetest_posix x86_64-linux-gnu-g++ -DNO_RT -I. -I../lib -I../driver -g src/transmitest_posix.cpp src/common.c src/parser.cpp -lstdc++ -lpcanfd -L../lib/lib -Wl,-rpath ../lib/lib -lpthread -o transmitest_posix make[1]: 离开目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/test” make[1]: 进入目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic” *** *** Processing 'pcanbasic' directory... *** make[2]: 进入目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic” *** *** Making PCANBasic library with FD support (PCAN driver >= 8.0)... *** *** target=libpcanbasic *** version=4.10.0 *** PCAN_ROOT=/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0 *** x86_64-linux-gnu-gcc-12 version=12 *** mkdir -p out x86_64-linux-gnu-gcc-12 -fPIC -shared "-O2" -Wall -Wcast-align -Wcast-qual -Wimplicit -Wpointer-arith -Wswitch -Wredundant-decls -Wreturn-type -Wunused -Wpedantic -fvisibility=hidden -DNO_RT -Iinclude -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/lib -c src/libpcanbasic.c -o out/libpcanbasic.o x86_64-linux-gnu-gcc-12 -fPIC -shared "-O2" -Wall -Wcast-align -Wcast-qual -Wimplicit -Wpointer-arith -Wswitch -Wredundant-decls -Wreturn-type -Wunused -Wpedantic -fvisibility=hidden -DNO_RT -Iinclude -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/lib -c src/pcaninfo.c -o out/pcaninfo.o x86_64-linux-gnu-gcc-12 -fPIC -shared "-O2" -Wall -Wcast-align -Wcast-qual -Wimplicit -Wpointer-arith -Wswitch -Wredundant-decls -Wreturn-type -Wunused -Wpedantic -fvisibility=hidden -DNO_RT -Iinclude -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/lib -c src/pcanlog.c -o out/pcanlog.o x86_64-linux-gnu-gcc-12 -fPIC -shared "-O2" -Wall -Wcast-align -Wcast-qual -Wimplicit -Wpointer-arith -Wswitch -Wredundant-decls -Wreturn-type -Wunused -Wpedantic -fvisibility=hidden -DNO_RT -Iinclude -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/lib -c src/pcbcore.c -o out/pcbcore.o x86_64-linux-gnu-gcc-12 -fPIC -shared "-O2" -Wall -Wcast-align -Wcast-qual -Wimplicit -Wpointer-arith -Wswitch -Wredundant-decls -Wreturn-type -Wunused -Wpedantic -fvisibility=hidden -DNO_RT -Iinclude -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/lib -c src/pcblog.c -o out/pcblog.o x86_64-linux-gnu-gcc-12 -fPIC -shared "-O2" -Wall -Wcast-align -Wcast-qual -Wimplicit -Wpointer-arith -Wswitch -Wredundant-decls -Wreturn-type -Wunused -Wpedantic -fvisibility=hidden -DNO_RT -Iinclude -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/lib -c src/pcbtrace.c -o out/pcbtrace.o x86_64-linux-gnu-gcc-12 -fPIC -shared "-O2" -Wall -Wcast-align -Wcast-qual -Wimplicit -Wpointer-arith -Wswitch -Wredundant-decls -Wreturn-type -Wunused -Wpedantic -fvisibility=hidden -DNO_RT -Iinclude -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/lib -Wno-pedantic -c /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/lib/src/libpcanfd.c -o out/libpcanfd.o x86_64-linux-gnu-gcc-12 -shared -Wl,-soname,libpcanbasic.so.4 -o lib/libpcanbasic.so.4.10.0 out/libpcanbasic.o out/pcaninfo.o out/pcanlog.o out/pcbcore.o out/pcblog.o out/pcbtrace.o out/libpcanfd.o -lm -lpthread -Xlinker --retain-symbols-file=src/libpcanbasic.def cd lib/; ln -sf libpcanbasic.so.4.10.0 libpcanbasic.so; ln -sf libpcanbasic.so.4.10.0 libpcanbasic.so.4 Info: only 64-bit version of libpcanbasic can be built. 32-bit version of libpcanbasic will not be build because the 32-bit version of libc seems not being installed... make[2]: 离开目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic” *** *** Processing 'pcaninfo' directory... *** make[2]: 进入目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcaninfo” *** *** Making pcaninfo... *** *** target=pcaninfo *** version=1.4.0 *** PCAN_ROOT=/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0 *** x86_64-linux-gnu-gcc-12 version=12 *** x86_64-linux-gnu-gcc-12 src/main.c ../pcanbasic/src/pcanlog.c ../pcanbasic/src/pcblog.c ../pcanbasic/src/pcbtrace.c ../pcanbasic/src/pcbcore.c ../pcanbasic/src/pcaninfo.c /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/lib/src/libpcanfd.c -O2 -Wall -Wcast-align -Wcast-qual -Wimplicit -Wpointer-arith -Wswitch -Wredundant-decls -Wreturn-type -Wunused -DNO_RT -I../pcanbasic/include -I../pcanbasic/src -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/lib -lm -lpthread -ldl -o pcaninfo.1.4.0 ln -sf pcaninfo.1.4.0 pcaninfo make[2]: 离开目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcaninfo” *** *** Processing 'examples' directory... *** make[2]: 进入目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/examples” *** *** Processing 'C' directory (console examples)... *** make[3]: 进入目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/examples/c” *** *** Making PCANBasic C examples *** *** target=pcanwrite pcanread pcaneventread pcaneventwrite *** x86_64-linux-gnu-gcc version=11 *** PCAN_ROOT=/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0 *** PCANBASIC_ROOT=/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic *** x86_64-linux-gnu-gcc -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/include -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver -DNO_RT src/pcanwrite.c -L/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/lib -Wl,-rpath /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/lib -lpcanbasic -o pcanwrite x86_64-linux-gnu-gcc -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/include -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver -DNO_RT src/pcanread.c -L/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/lib -Wl,-rpath /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/lib -lpcanbasic -o pcanread x86_64-linux-gnu-gcc -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/include -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver -DNO_RT src/pcaneventread.c -L/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/lib -Wl,-rpath /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/lib -lpcanbasic -o pcaneventread x86_64-linux-gnu-gcc -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/include -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver -DNO_RT src/pcaneventwrite.c -L/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/lib -Wl,-rpath /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/lib -lpcanbasic -o pcaneventwrite make[3]: 离开目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/examples/c” *** *** Processing 'NativeC++' directory (console examples)... *** make[3]: 进入目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++” *** *** Making PCANBasic C++ examples... *** make[4]: 进入目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/01_LookUpChannel” g++ -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/include -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver -std=c++11 -Wno-format-truncation 01_LookUpChannel.cpp RunExample.cpp -L/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/lib -Wl,-rpath /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/lib -lpcanbasic -o ../LookUpChannel make[4]: 离开目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/01_LookUpChannel” make[4]: 进入目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/02_GetSetParameter” g++ -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/include -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver -std=c++11 -Wno-format-truncation 02_GetSetParameter.cpp RunExample.cpp -L/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/lib -Wl,-rpath /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/lib -lpcanbasic -o ../GetSetParameter make[4]: 离开目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/02_GetSetParameter” make[4]: 进入目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/03_ManualRead” g++ -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/include -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver -std=c++11 -Wno-format-truncation 03_ManualRead.cpp RunExample.cpp -L/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/lib -Wl,-rpath /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/lib -lpcanbasic -o ../ManualRead make[4]: 离开目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/03_ManualRead” make[4]: 进入目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/04_ManualWrite” g++ -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/include -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver -std=c++11 -Wno-format-truncation 04_ManualWrite.cpp RunExample.cpp -L/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/lib -Wl,-rpath /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/lib -lpcanbasic -o ../ManualWrite make[4]: 离开目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/04_ManualWrite” make[4]: 进入目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/05_TimerRead” g++ -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/include -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver -std=c++11 -Wno-format-truncation 05_TimerRead.cpp RunExample.cpp -L/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/lib -Wl,-rpath /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/lib -lpcanbasic -lpthread -o ../TimerRead make[4]: 离开目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/05_TimerRead” make[4]: 进入目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/06_TimerWrite” g++ -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/include -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver -std=c++11 -Wno-format-truncation 06_TimerWrite.cpp RunExample.cpp -L/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/lib -Wl,-rpath /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/lib -lpcanbasic -lpthread -o ../TimerWrite make[4]: 离开目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/06_TimerWrite” make[4]: 进入目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/07_ThreadRead” g++ -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/include -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver -std=c++11 -Wno-format-truncation 07_ThreadRead.cpp RunExample.cpp -L/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/lib -Wl,-rpath /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/lib -lpcanbasic -lpthread -o ../ThreadRead make[4]: 离开目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/07_ThreadRead” make[4]: 进入目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/08_EventDrivenRead” g++ -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/include -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver -std=c++11 -Wno-format-truncation 08_EventDrivenRead.cpp RunExample.cpp -L/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/lib -Wl,-rpath /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/lib -lpcanbasic -lpthread -o ../EventDrivenRead make[4]: 离开目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/08_EventDrivenRead” make[4]: 进入目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/09_TraceFiles” g++ -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/include -I/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/driver -std=c++11 -Wno-format-truncation 09_TraceFiles.cpp RunExample.cpp -L/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/lib -Wl,-rpath /home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/pcanbasic/lib -lpcanbasic -lpthread -o ../TraceFiles make[4]: 离开目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++/09_TraceFiles” make[3]: 离开目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/examples/NativeC++” make[2]: 离开目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic/examples” make[1]: 离开目录“/home/zhm/Downloads/peak-linux-driver-8.20.0.tar.gz/peak-linux-driver-8.20.0/libpcanbasic”有没有报错
最新发布
11-15
Ld /Users/chuxin/Library/Developer/Xcode/DerivedData/Unity-iPhone-evdomaesbzciddazarfjkizmtlpa/Build/Products/Release-iphoneos/UnityFramework.framework/UnityFramework normal (in target 'UnityFramework' from project 'Unity-iPhone') cd /Users/chuxin/Desktop/iOS /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -Xlinker -reproducible -target arm64-apple-ios12.0 -dynamiclib -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.5.sdk -Os -L/Users/chuxin/Library/Developer/Xcode/DerivedData/Unity-iPhone-evdomaesbzciddazarfjkizmtlpa/Build/Intermediates.noindex/EagerLinkingTBDs/Release-iphoneos -L/Users/chuxin/Library/Developer/Xcode/DerivedData/Unity-iPhone-evdomaesbzciddazarfjkizmtlpa/Build/Products/Release-iphoneos -L/Users/chuxin/Desktop/iOS/Libraries -L/Users/chuxin/Desktop/iOS/Libraries/Plugins/iOS/Firebase -L/Users/chuxin/Desktop/iOS/Libraries/Third/UniWebView/Plugins/iOS -L/Users/chuxin/Desktop/iOS/Libraries/Plugins/iOS -L/Users/chuxin/Desktop/iOS/Libraries/Skyunion/RunTime/Utils/Plugins/iOS -F/Users/chuxin/Library/Developer/Xcode/DerivedData/Unity-iPhone-evdomaesbzciddazarfjkizmtlpa/Build/Intermediates.noindex/EagerLinkingTBDs/Release-iphoneos -F/Users/chuxin/Library/Developer/Xcode/DerivedData/Unity-iPhone-evdomaesbzciddazarfjkizmtlpa/Build/Products/Release-iphoneos -F/Users/chuxin/Desktop/iOS/Frameworks/com.unity.ads/Plugins/iOS -filelist /Users/chuxin/Library/Developer/Xcode/DerivedData/Unity-iPhone-evdomaesbzciddazarfjkizmtlpa/Build/Intermediates.noindex/Unity-iPhone.build/Release-iphoneos/UnityFramework.build/Objects-normal/arm64/UnityFramework.LinkFileList -install_name @rpath/UnityFramework.framework/UnityFramework -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -rpath -Xlinker @loader_path/Frameworks -Xlinker -map -Xlinker /Users/chuxin/Library/Developer/Xcode/DerivedData/Unity-iPhone-evdomaesbzciddazarfjkizmtlpa/Build/Intermediates.noindex/Unity-iPhone.build/Release-iphoneos/UnityFramework.build/UnityFramework-LinkMap-normal-arm64.txt -dead_strip -Xlinker -object_path_lto -Xlinker /Users/chuxin/Library/Developer/Xcode/DerivedData/Unity-iPhone-evdomaesbzciddazarfjkizmtlpa/Build/Intermediates.noindex/Unity-iPhone.build/Release-iphoneos/UnityFramework.build/Objects-normal/arm64/UnityFramework_lto.o -Xlinker -dependency_info -Xlinker /Users/chuxin/Library/Developer/Xcode/DerivedData/Unity-iPhone-evdomaesbzciddazarfjkizmtlpa/Build/Intermediates.noindex/Unity-iPhone.build/Release-iphoneos/UnityFramework.build/Objects-normal/arm64/UnityFramework_dependency_info.dat -stdlib\=libc++ -fobjc-arc -fobjc-link-runtime -ObjC\ -weak_framework CoreMotion -weak-lSystem -ObjC -framework CoreTelephony -liPhone-lib -framework Security -framework MediaToolbox -framework CoreText -framework AudioToolbox -weak_framework AVFoundation -framework AVKit -framework CFNetwork -framework CoreGraphics -framework CoreMedia -weak_framework CoreMotion -framework CoreVideo -framework Foundation -framework OpenAL -framework OpenGLES -framework QuartzCore -framework SystemConfiguration -framework UIKit -liconv.2 -lil2cpp -framework UnityAds -lFirebaseCppCrashlytics -lFirebaseCppAnalytics -lUniWebView -lCrashlyticsiOSWrapper -lrapidjson -lsqlcipher -lbsdiff -lFirebaseCppApp -lzipw -lcpatch -framework AdSupport -framework CoreTelephony -framework StoreKit -framework WebKit -weak_framework Metal -weak_framework GameController -o /Users/chuxin/Library/Developer/Xcode/DerivedData/Unity-iPhone-evdomaesbzcid
07-09
FAILED: [code=1] rpmsg_lite_str_echo_rtos_imxcm7.elf C:\WINDOWS\system32\cmd.exe /C "cd . && C:\Users\KS250022\.mcuxpressotools\arm-gnu-toolchain-14.2.rel1-mingw-w64-x86_64-arm-none-eabi\bin\arm-none-eabi-gcc.exe -fstack-usage -D__NEWLIB__ -fstack-usage -D__NEWLIB__ -O0 -g -O0 -g -DDEBUG -DCPU_MIMX8ML8DVNLZ -DCPU_MIMX8ML8DVNLZ_cm7 -DMCUXPRESSO_SDK -DSDK_OS_FREE_RTOS -DSERIAL_PORT_TYPE_UART=1 -g -O0 -mcpu=cortex-m7 -Wall -Wno-address-of-packed-member -mthumb -MMD -MP -fno-common -ffunction-sections -fdata-sections -ffreestanding -fno-builtin -mapcs -std=gnu99 -mfloat-abi=hard -mfpu=fpv5-sp-d16 -DSDK_DEBUGCONSOLE=1 -g -mcpu=cortex-m7 -Wall -Wl,--print-memory-usage -fno-common -ffunction-sections -fdata-sections -ffreestanding -fno-builtin -mthumb -mapcs -Xlinker --gc-sections -Xlinker -static -Xlinker -z -Xlinker muldefs -Xlinker -Map=output.map -Xlinker --defsym=__stack_size__=0x400 -Xlinker --defsym=__heap_size__=0x400 -mfloat-abi=hard -mfpu=fpv5-sp-d16 --specs=nano.specs --specs=nosys.specs -TD:/install/hh/wo/evkmimx8mp_rpmsg_lite_str_echo_rtos_imxcm7/armgcc/MIMX8ML8xxxxx_cm7_ram.ld -static -Wl,--no-warn-rwx-segments @CMakeFiles\rpmsg_lite_str_echo_rtos_imxcm7.elf.rsp -o rpmsg_lite_str_echo_rtos_imxcm7.elf && C:\WINDOWS\system32\cmd.exe /C "cd /D D:\install\hh\wo\evkmimx8mp_rpmsg_lite_str_echo_rtos_imxcm7\armgcc\debug && C:\Users\KS250022\.mcuxpressotools\arm-gnu-toolchain-14.2.rel1-mingw-w64-x86_64-arm-none-eabi\bin\arm-none-eabi-objcopy -Obinary D:/install/hh/wo/evkmimx8mp_rpmsg_lite_str_echo_rtos_imxcm7/armgcc/debug/rpmsg_lite_str_echo_rtos_imxcm7.elf D:/install/hh/wo/evkmimx8mp_rpmsg_lite_str_echo_rtos_imxcm7/armgcc/debug/rpmsg_lite_str_echo_rtos.bin"" C:/Users/KS250022/.mcuxpressotools/arm-gnu-toolchain-14.2.rel1-mingw-w64-x86_64-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/14.2.1/../../../../arm-none-eabi/bin/ld.exe: CMakeFiles/rpmsg_lite_str_echo_rtos_imxcm7.elf.dir/D_/install/hh/wo/evkmimx8mp_rpmsg_lite_str_echo_rtos_imxcm7/main_remote.c.obj: in function `main': D:/install/hh/wo/evkmimx8mp_rpmsg_lite_str_echo_rtos_imxcm7/main_remote.c:205:(.text.main+0x1e): undefined reference to `weld_task_init'
09-27
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值