Статическая линковка: нестандартное имя библиотеки

Модератор: Модераторы разделов

IMB
Сообщения: 2567
ОС: Debian

Статическая линковка: нестандартное имя библиотеки

Сообщение IMB »

Доброго дня!
Пытаюсь слинковать свою программу с библиотекой от производителя, проблема в том, что библиотека имеет не стандартное имя libname.
makefile

Код: Выделить всё

CCFLAGS := -Iinc

ifeq ($(USE_APPRO), y)
    LDFLAGS := --library-path=$(APPRO_DIR)/ipnc_app/interface/lib
    CCFLAGS += -I$(APPRO_DIR)/ipnc_app/interface/inc
endif

$(CROSS)gcc $(CCFLAGS) -c $(SRC)/server.c
$(CROSS)gcc $(LDFLAGS) server.o --library=file_msg_drv.a

Слинковать необходимо с библиотекой file_msg_drv.a.
Вывод на этапе линковки:

Код: Выделить всё

/home/kirill/MVK-IP/SDK/montavista/pro/devkit/arm/v5t_le/bin/arm_v5t_le-gcc
-Iinc -I/home/kirill/MegaIP/src/appro/ipnc_app/interface/inc -c src/server.c
/home/kirill/MVK-IP/SDK/montavista/pro/devkit/arm/v5t_le/bin/arm_v5t_le-gcc
--library-path=/home/kirill/MegaIP/src/appro/ipnc_app/interface/lib server.o --library=file_msg_drv.a
server.o: In function `send_answer':
server.c:(.text+0x460): undefined reference to `net_get_ifaddr'
server.c:(.text+0x4c8): undefined reference to `net_get_netmask'
server.c:(.text+0x530): undefined reference to `net_get_gateway'
server.o: In function `main':
server.c:(.text+0x11e8): undefined reference to `net_set_ifaddr'
server.c:(.text+0x125c): undefined reference to `net_set_netmask'
server.c:(.text+0x12cc): undefined reference to `net_set_gateway'
collect2: ld returned 1 exit status
make: *** [all] Error 1

Поиск ничего не дал, или я не смог, пока, найти.
Как необходимо проводить линковку в данном случае?
Спасибо.
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Статическая линковка: нестандартное имя библиотеки

Сообщение eddy »

А где ключик static?
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: Статическая линковка: нестандартное имя библиотеки

Сообщение IMB »

eddy писал(а):
11.05.2011 13:02
А где ключик static?

Виноват, пропустил - $(CROSS)gcc $(LDFLAGS) --static server.o --library=file_msg_drv.a
Но это ничего не изменило.
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5413
ОС: Gentoo

Re: Статическая линковка: нестандартное имя библиотеки

Сообщение /dev/random »

Попробуйте просто перечислить её в списке компилируемых файлов, с полным путём.
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: Статическая линковка: нестандартное имя библиотеки

Сообщение IMB »

Решил следующим путём:

Код: Выделить всё

LDFLAGS := \
    --library-path $(APPRO_DIR)/ipnc_app/interface/lib/file_msg_drv.a \
    --library-path $(APPRO_DIR)/ipnc_app/interface/lib/sem_util.a
CCFLAGS += -I$(APPRO_DIR)/ipnc_app/interface/inc

$(CROSS)gcc $(CCFLAGS) -c $(SRC)/server.c -c $(SRC)/net_config.c
$(CROSS)gcc --output=$(BIN)/$(TARGET)server \
    server.o net_config.o $(LDFLAGS)

Теперь бы ещё привести это к одной команде, требуют эстетские чувства.
Спасибо сказали: