Я использую GCC для Renesas с IDE Renesas E2 Studio (v.6.2.0). Не то
это должно иметь значение, но я также использовал Applilet3 (v.3.08.01.05) для генерации
файлы поддержки платы и драйверы периферийных устройств.
Когда я пытаюсь собрать, я получаю следующие ошибки ...
'Invoking Linker'
rl78-elf-gcc (......object files and flags.......)
./src/r_main.o: In function `main':
<path_to_git_repo_dir>\src\<project_name>\HardwareDebug/../src/r_main.c:86: undefined reference to `_common_lib_a_init'
<path_to_git_repo_dir>\src\<project_name>\HardwareDebug/../src/r_main.c:89: undefined reference to `_common_lib_b_init'
collect2.exe: error: ld returned 1 exit status
makefile:67: recipe for target 'my_project.elf' failed
make: *** [my_project.elf] Error 1
Настройка проекта
У меня есть общий исходный код для проектов в папке "lib". В
main()
Я вызываю некоторые функции инициализации для этих "библиотек", как
Вы можете видеть из ошибок. Я не понимаю, почему компиляция
процесс работает, и все же это не удается.
Структура моего исходного дерева выглядит следующим образом ...
git-repo-dir/
.git/
doc/
lib/
my_lib_a/
common_lib_a.h
common_lib_a.c
my_lib_b/
common_lib_b.h
common_lib_b.c
src/
my_project/
.cproj
.project
applilet3_config.cgp
src/
generate/
Я добавил исходный код библиотеки в проект E2 Studio с помощью ...
- Щелчок правой кнопкой мыши по имени проекта на панели "Project Explorer" в E2
- Нажав
Import
и выберите File System
- Перейдите к
get-repo-dir
и выберите (в один клик) папку lib
- Установите флажок на левой панели, чтобы включить все файлы в
lib
- Убедитесь, что выбран «Создать папку верхнего уровня»
- Нажмите «Дополнительно»
- Установите флажки для «Создать ссылки в рабочей области» и «Создать виртуальные папки» и «Создать расположение ссылок относительно:» is
PROJECT_LOC
- Конец
Затем я добавляю пути включения библиотек в настройки сборки ...
- Щелчок правой кнопкой мыши по названию проекта на панели E2 "Project Explorer"
- Выберите «Свойства»
- Выбрать
C/C++ General > Paths and Symbols
- Убедитесь, что конфигурация является текущей / активной
- Выберите язык "GNU C"
- Нажмите «Добавить», чтобы добавить следующее
"${ProjDirPath}/../../lib/my_lib_a"
"${ProjDirPath}/../../lib/my_lib_b"
- Применить
- Убедитесь, что эти пути видны в
C/C++ Build > Settings > Compiler > Includes
Итак, в E2 Studio, Project Explorer показывает ..
Archives/ (a virtual folder)
Includes/ (a virtual folder/list)
src/
generate/
lib/ (the virtual lib folder I added)
my_lib_a/
my_lib_b/
Есть идеи, почему я получаю ошибку компоновщика?