Программу необходимо слинковать с двумя библиотеками, одна из библиотек используется во многих местах, поэтому её предпочтительно линковать динамически.
динамическая линковка
Код: Выделить всё
$(CROSS)gcc $(CCFLAGS) $(SRC)/fpga.c -o $(BIN)/fpga.cgi \
-L$(LIBSPI_DIR)/lib -lspi \
-L$(LIBGPIO_DIR)/lib -lgpio
$ arm_v5t_le-ldd bin/fpga.cgi
libspi.so => not found
libgpio.so => not found
libc.so.6 => /home/kirill/MVK-IP/SDK/montavista/pro/devkit/arm/v5t_le/target/lib/libc.so.6 (0xdead1000)
/lib/ld-linux.so.3 => /home/kirill/MVK-IP/SDK/montavista/pro/devkit/arm/v5t_le/target/lib/ld-linux.so.3 (0xdead2000)
$ ls -l bin/fpga.cgi
-rwxr-xr-x 1 kirill kirill 10056 Sep 16 14:25 bin/fpga.cgi
статическая линковка
Код: Выделить всё
$(CROSS)gcc $(CCFLAGS) $(SRC)/fpga.c -o $(BIN)/fpga.cgi \
-L$(LIBSPI_DIR)/lib -lspi \
-L$(LIBGPIO_DIR)/lib -static -lgpio
$ arm_v5t_le-ldd bin/fpga.cgi
not a dynamic executable
$ ls -l bin/fpga.cgi
-rwxr-xr-x 1 kirill kirill 2426697 Sep 16 14:27 bin/fpga.cgi
смешанная линковка
Код: Выделить всё
$(CROSS)gcc $(CCFLAGS) $(SRC)/fpga.c -o $(BIN)/fpga.cgi \
-L$(LIBSPI_DIR)/lib -lspi \
-L$(LIBGPIO_DIR)/lib -Wl,-static -lgpio
/home/kirill/MVK-IP/SDK/montavista/pro/devkit/arm/v5t_le/bin/../lib/gcc/armv5tl-montavista-linux-gnueabi/4.2.0/../../../../armv5tl-montavista-linux-gnueabi/bin/ld: cannot find -lgcc_s
collect2: ld returned 1 exit status
make: *** [all] Error 1
Вопрос - как правильно провести смешанную линковку?
Спасибо.