Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.07.2013, 09:27   #1
tiger()
Пользователь
 
Регистрация: 09.04.2011
Сообщений: 49
По умолчанию Компиляция плюсового кода

Компилирую статическую библиотеку c++ для последующего ее включения в с-проект.

Делаю так:

set COMPILER=...\arm-elf-g++.exe
set LIB_COMPILER=...\arm-elf-ar.exe

%COMPILER% -o object_file.o source_file.c
%LIB_COMPILER% rc libname.a object_file.o

После компиляции получаю такие ошибки от линкера:

c:/program files/fujitsu h61-series gcc toolchain/bin/../lib/gcc/arm-elf/4.4.6/.
./../../../arm-elf/lib/crt0.o: In function `start':
c:\mmic\toolchains\arm1176\trunk\gc c\build\newlib-1.19.0\arm-elf\libgloss\arm/..
/../../../../src/newlib-1.19.0/libgloss/arm/crt0.S:318: undefined reference to `
main'
c:/program files/fujitsu h61-series gcc toolchain/bin/../lib/gcc/arm-elf/4.4.6/.
./../../../arm-elf/lib\libc.a(lib_a-abort.o): In function `abort':
c:\mmic\toolchains\arm1176\trunk\gc c\build\newlib-1.19.0\arm-elf\newlib\libc\std
lib/../../../../../../src/newlib-1.19.0/newlib/libc/stdlib/abort.c:63: undefined
reference to `_exit'
c:/program files/fujitsu h61-series gcc toolchain/bin/../lib/gcc/arm-elf/4.4.6/.
./../../../arm-elf/lib\libc.a(lib_a-fstatr.o): In function `_fstat_r':
c:\mmic\toolchains\arm1176\trunk\gc c\build\newlib-1.19.0\arm-elf\newlib\libc\ree
nt/../../../../../../src/newlib-1.19.0/newlib/libc/reent/fstatr.c:62: undefined
reference to `_fstat'
c:/program files/fujitsu h61-series gcc toolchain/bin/../lib/gcc/arm-elf/4.4.6/.
./../../../arm-elf/lib\libc.a(lib_a-openr.o): In function `_open_r':
c:\mmic\toolchains\arm1176\trunk\gc c\build\newlib-1.19.0\arm-elf\newlib\libc\ree
nt/../../../../../../src/newlib-1.19.0/newlib/libc/reent/openr.c:59: undefined r
eference to `_open'
c:/program files/fujitsu h61-series gcc toolchain/bin/../lib/gcc/arm-elf/4.4.6/.
./../../../arm-elf/lib\libc.a(lib_a-sbrkr.o): In function `_sbrk_r':
c:\mmic\toolchains\arm1176\trunk\gc c\build\newlib-1.19.0\arm-elf\newlib\libc\ree
nt/../../../../../../src/newlib-1.19.0/newlib/libc/reent/sbrkr.c:60: undefined r
eference to `_sbrk'
c:/program files/fujitsu h61-series gcc toolchain/bin/../lib/gcc/arm-elf/4.4.6/.
./../../../arm-elf/lib\libc.a(lib_a-signalr.o): In function `_kill_r':
c:\mmic\toolchains\arm1176\trunk\gc c\build\newlib-1.19.0\arm-elf\newlib\libc\ree
nt/../../../../../../src/newlib-1.19.0/newlib/libc/reent/signalr.c:61: undefined
reference to `_kill'
c:/program files/fujitsu h61-series gcc toolchain/bin/../lib/gcc/arm-elf/4.4.6/.
./../../../arm-elf/lib\libc.a(lib_a-signalr.o): In function `_getpid_r':
c:\mmic\toolchains\arm1176\trunk\gc c\build\newlib-1.19.0\arm-elf\newlib\libc\ree
nt/../../../../../../src/newlib-1.19.0/newlib/libc/reent/signalr.c:96: undefined
reference to `_getpid'
c:/program files/fujitsu h61-series gcc toolchain/bin/../lib/gcc/arm-elf/4.4.6/.
./../../../arm-elf/lib\libc.a(lib_a-writer.o): In function `_write_r':
c:\mmic\toolchains\arm1176\trunk\gc c\build\newlib-1.19.0\arm-elf\newlib\libc\ree
nt/../../../../../../src/newlib-1.19.0/newlib/libc/reent/writer.c:58: undefined
reference to `_write'
c:/program files/fujitsu h61-series gcc toolchain/bin/../lib/gcc/arm-elf/4.4.6/.
./../../../arm-elf/lib\libc.a(lib_a-closer.o): In function `_close_r':
c:\mmic\toolchains\arm1176\trunk\gc c\build\newlib-1.19.0\arm-elf\newlib\libc\ree
nt/../../../../../../src/newlib-1.19.0/newlib/libc/reent/closer.c:53: undefined
reference to `_close'


Какой-то библиотеки не хватает в компиляторе? Или что-то в командной строке неправильно?

В папке toolchain есть хидер с дефайнами этих функций в "старые" имена типа
#define _write write

Может такой надо куда-то подключить?

Последний раз редактировалось tiger(); 12.07.2013 в 12:15.
tiger() вне форума Ответить с цитированием
Старый 13.07.2013, 20:18   #2
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,152
По умолчанию

Цитата:
Сообщение от tiger() Посмотреть сообщение
Какой-то библиотеки не хватает в компиляторе?
Это будет "unresolved external symbol"
Цитата:
В папке toolchain есть хидер с дефайнами этих функций в "старые" имена типа
#define _write write
a это - "undefined reference"
Smogg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Компиляция кода 1982 года velvetdust Помощь студентам 4 30.12.2011 00:32
Динамическая компиляция кода. Sargonass C# (си шарп) 0 25.12.2011 18:57
Компиляция кода... не могу сообразить. Жека90 Помощь студентам 6 13.06.2011 23:29
Компиляция исходного кода vitekrock Общие вопросы по Java, Java SE, Kotlin 5 05.12.2010 21:24