связать статическую библиотеку с заголовками с помощью компилятора Green Hills

У меня есть статическая библиотека .a с несколькими предоставленными файлами заголовков. Я хочу связать его с файлами .o в двоичный файл с помощью компилятора Green hills. Ошибка, которую я получаю:

[elxr] (ошибка № 412) неразрешенные символы.

Я пытаюсь указать путь к заголовочным файлам, предоставляющим -I filepath компоновщику.

Однако, похоже, это не работает.

Обновлено с кодом.

# Recipe for linking
__GHSRH850_ERRALL += $(__GHSRH850_TARGETERR)
GHSRH850_LIB = SRC\MCU\DROME\RGL\libd1mx_rh850_ghs.a
$(GHSRH850_TARGETEMU): $(__GHSRH850_OBJS) $(GHSRH850_LSCRIPT) $(GHSRH850_LIB) \
                      $(CORE_MAKPREREQS) | __GHSRH850_DIRS
    $(call CORE_REPORTFILE,Linking,$(@F))
    $(eval __GHSRH850_ERRDONE += $(__GHSRH850_TARGETERR))
    $(GHSRH850_LD)                       \
       $(GHSRH850_LSCRIPT)                                                            \
       -o $@                                                                          \
       $(GHSRH850_LIB)                                                  \
       $(__GHSRH850_OBJS)                                                            \
       $(GHSRH850_LFLAGS)                                                             \
       > $(__GHSRH850_TARGETERR)

Файл make довольно большой, поэтому я не могу разместить его здесь целиком. В основном библиотека добавляется с помощью:

GHSRH850_LIB = file\path\to\libname.a

В flags добавлен путь к файлам с заголовками:

GHSRH850_LFLAGS += -I file\path\to\headers

Другие описания:

GHSRH850_LFLAGS — Флаги линкера

GHSRH850_LSCRIPT — файл скрипта компоновщика

__GHSRH850_OBJS - Список файлов объектов

Компилятор, который используется ccrh850.exe.

Код ошибки:

[elxr] (error #412) unresolved symbols: 35
_R_UTIL_DHD_Init    from drglgmm_dhd.o
_R_UTIL_DHD_Config  from drglgmm_dhd.o
_R_DEV_SQRTF    from libd1mx_rh850_ghs.a(r_drw2d_main.o)
_R_VDCE_Sys_HsyncActLevelSet    from libd1mx_rh850_ghs.a(r_vdce_api.o)

person Fen    schedule 14.03.2019    source источник
comment
Укажите свою реальную командную строку, которую вы пытаетесь использовать для связывания двоичного файла.   -  person Ahmed Masud    schedule 14.03.2019
comment
Я нахожу ваше отсутствие кода... тревожным. Пожалуйста, добавьте код, чтобы мы могли помочь вам лучше. Спасибо!   -  person    schedule 14.03.2019
comment
Вот это да! Green Hills все еще производит компиляторы C или это для древней системы? (Я помню, когда около 30 лет назад команду компилятора Green Hills C называли gcc, что сбивало с толку.)   -  person Ian Abbott    schedule 14.03.2019
comment
Добро пожаловать в Переполнение стека. Пожалуйста, прочитайте Как спросить и минимальный воспроизводимый пример и опубликуйте свой вопрос с точным примером того, что происходит не так, чтобы мы могли помочь. Спасибо   -  person Ahmed Masud    schedule 14.03.2019
comment
@IanAbbott Они являются одним из крупнейших поставщиков компиляторов для (современных) встраиваемых систем.   -  person Lundin    schedule 14.03.2019
comment
Путь к заголовочным файлам не должен иметь значения, если вы получаете ошибки компоновщика. Возможно нужно указать путь к файлам библиотеки. Традиционно для cc это делалось с опцией -L, поэтому я думаю, что то же самое и для компилятора Green Hills C. Также параметр l в нижнем регистре указывает имя библиотеки без префикса lib, например -lname указывает libname.a или libname.so.   -  person Ian Abbott    schedule 14.03.2019
comment
относительно: GHSRH850_LFLAGS += -I file\path\to\headers Это неправильно. Файлы заголовков используются только на этапе компиляции. На этапе компоновщика необходим путь к библиотекам и (сокращенные) имена библиотек.   -  person user3629249    schedule 14.03.2019


Ответы (1)


Спасибо всем за быстрый ответ. Проблема была решена. В основном ошибки возникали из-за того, что другие исходные файлы не компилировались, из-за отсутствующих заголовков, и компилятор не выдавал никаких уведомлений об этом. Таким образом, когда все объектные файлы скомпилированы, ошибки исчезли. Правильный способ добавить библиотеку — либо добавить путь, как я, либо использовать -lname, как упомянул Ян Эббот.

person Fen    schedule 24.03.2019