URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 4535
[ Назад ]

Исходное сообщение
"Компиляция Си'шного кода с помощью g++"

Отправлено IPFreely , 03-Авг-05 09:19 
Здравствуйте!
Возможно ли скомпилировать код написанный на С(чистом С) компилятором g++?
Если да, то как?
А то у меня компилятор что-то ругается:

---
$g++ 4.c jdatasrc.c -ljpeg -L/usr/X11/lib/ -lX11 -lXpm -lXext -lm -lXv

/tmp/cc2m24Ip.o(.text+0x9f5): In function `read_JPEG_buffer(unsigned char*, imagem*, unsigned)':
4.c: undefined reference to `jpeg_std_error(jpeg_error_mgr*)'
/tmp/cc2m24Ip.o(.text+0xa32):4.c: undefined reference to `jpeg_destroy_decompress(jpeg_decompress_struct*)'
/tmp/cc2m24Ip.o(.text+0xa44):4.c: undefined reference to `jpeg_destroy_decompress(jpeg_decompress_struct*)'
/tmp/cc2m24Ip.o(.text+0xa7c):4.c: undefined reference to `jpeg_CreateDecompress(jpeg_decompress_struct*, int, unsigned)'
/tmp/cc2m24Ip.o(.text+0xab8):4.c: undefined reference to `jpeg_read_header(jpeg_decompress_struct*, int)'
/tmp/cc2m24Ip.o(.text+0xaca):4.c: undefined reference to `jpeg_start_decompress(jpeg_decompress_struct*)'
/tmp/cc2m24Ip.o(.text+0xb84):4.c: undefined reference to `jpeg_read_scanlines(jpeg_decompress_struct*, unsigned char**, unsigned)'
/tmp/cc2m24Ip.o(.text+0xbcd):4.c: undefined reference to `jpeg_finish_decompress(jpeg_decompress_struct*)'
/tmp/cc2m24Ip.o(.text+0xbdf):4.c: undefined reference to `jpeg_destroy_decompress(jpeg_decompress_struct*)'
/tmp/cc2m24Ip.o(.text+0xc69): In function `read_JPEG_file(char*, imagem*)':
4.c: undefined reference to `jpeg_std_error(jpeg_error_mgr*)'
/tmp/cc2m24Ip.o(.text+0xca6):4.c: undefined reference to `jpeg_destroy_decompress(jpeg_decompress_struct*)'
/tmp/cc2m24Ip.o(.text+0xcb8):4.c: undefined reference to `jpeg_destroy_decompress(jpeg_decompress_struct*)'
/tmp/cc2m24Ip.o(.text+0xcf1):4.c: undefined reference to `jpeg_CreateDecompress(jpeg_decompress_struct*, int, unsigned)'
/tmp/cc2m24Ip.o(.text+0xd09):4.c: undefined reference to `jpeg_stdio_src(jpeg_decompress_struct*, _IO_FILE*)'
/tmp/cc2m24Ip.o(.text+0xd1d):4.c: undefined reference to `jpeg_read_header(jpeg_decompress_struct*, int)'
/tmp/cc2m24Ip.o(.text+0xd2f):4.c: undefined reference to `jpeg_start_decompress(jpeg_decompress_struct*)'
/tmp/cc2m24Ip.o(.text+0xde9):4.c: undefined reference to `jpeg_read_scanlines(jpeg_decompress_struct*, unsigned char**, unsigned)'
/tmp/cc2m24Ip.o(.text+0xe32):4.c: undefined reference to `jpeg_finish_decompress(jpeg_decompress_struct*)'
/tmp/cc2m24Ip.o(.text+0xe44):4.c: undefined reference to `jpeg_destroy_decompress(jpeg_decompress_struct*)'
/tmp/ccP4sIcJ.o(.text+0x1fc): In function `jpeg_buffer_src(jpeg_decompress_struct*, unsigned char*, unsigned)':
jdatasrc.c: undefined reference to `jpeg_resync_to_restart(jpeg_decompress_struct*, int)'
collect2: ld returned 1 exit status
---

Если компилировать с помощью gcc то все в порядке:
---
gcc 4.c jdatasrc.c -ljpeg -L/usr/X11/lib/ -lX11 -lXpm -lXext -lm -lXv
---

Спасибо!


Содержание

Сообщения в этом обсуждении
"Компиляция Си'шного кода с помощью g++"
Отправлено MaximKuznetsov , 03-Авг-05 09:30 
по идее должно помоч g++ -x с -std=c99,
еще неплохо-бы правильно оформить прототипы функций.
(тот самый extern "C" применить)

P.S.а вообще забудьте о компиляции из командной строки,
напишите Makefile (заодно с make`ом разберётесь)


"Компиляция Си'шного кода с помощью g++"
Отправлено blackpepper , 04-Авг-05 15:30 
>P.S.а вообще забудьте о компиляции из командной строки,

To MaximKuznetsov -offtop
Ничего личного и никаких попыток умалить вашу компетентность.Для начинающих программеров,и особенно в *NIX, компиляция из командной строки на начальных этапах полезна для понимания.



"Компиляция Си'шного кода с помощью g++"
Отправлено IPFreely , 03-Авг-05 09:30 
Блин!
Извините. поспешил!
Если кому интересно то хедеры с сфункциями на которые ругался компилятор нужно было заключить в

#ifdef __cplusplus
extern "C" {
<ЗДЕСЬ ХЕДЕРЫ>
}
#endif


"Компиляция Си'шного кода с помощью g++"
Отправлено execve , 04-Авг-05 17:44 
>Блин!
>Извините. поспешил!
>Если кому интересно то хедеры с сфункциями на которые ругался компилятор нужно
>было заключить в
>
>#ifdef __cplusplus
>extern "C" {
><ЗДЕСЬ ХЕДЕРЫ>
>}
>#endif

Штатная конструкция:

#ifdef __cplusplus
extern "C" {
#endif

// Общие для C и C++ объявления

#ifdef __cplusplus
}
#endif