Summary: | Не правильный путь хидерных файлов | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Dmitry A. Kharitonov <kharpost> |
Component: | avr-gcc | Assignee: | Grigory Milev <week> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | normal | ||
Priority: | P3 | CC: | kharpost, mike, viy, week |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux |
Description
Dmitry A. Kharitonov
2009-11-15 23:29:18 MSK
Остаётся Вам и поправить. (В ответ на комментарий №1)
> Остаётся Вам и поправить.
Руки дойдут -- займусь
А где он не правильный то? Можно подетальнее? Я считаю, что программы должны компилироваться без дополнительного указания путей. [user@localhost CTRL6437]$ cat test.cpp #include <avr/io.h> int main() { uint8_t k=0,t=5; k=k+t; } [user@localhost CTRL6437]$ avr-gcc -Wall -Werror -g -Os -S -mint8 -mmcu=atmega8535 test.cpp test.cpp:1:20: error: avr/io.h: No such file or directory test.cpp: In function 'int main()': test.cpp:4: error: 'uint8_t' was not declared in this scope test.cpp:4: error: expected `;' before 'k' test.cpp:5: error: 'k' was not declared in this scope test.cpp:5: error: 't' was not declared in this scope [user@localhost CTRL6437]$ avr-gcc -Wall -Werror -g -Os -S -mint8 -I/usr/include/avr -mmcu=atmega8535 test.cpp А что? появился ответственный за пакет? я тогда ещё парочку багов повешу, намного серьёзней. [user@localhost CTRL6437]$ avr-gcc -v -Wall -Werror -g -Os -S -mint8 -mmcu=atmega8535 test.cpp Reading specs from /usr/lib/avr/lib/gcc/avr/4.2.2/specs Target: avr Configured with: ../configure --target=avr --host=i586-alt-linux --enable-languages=c,c++ --disable-nls --disable-libssp --enable-target-optspace --includedir=/usr/include/avr --prefix=/usr --exec-prefix=/usr/lib/avr --mandir=/usr/share/man --infodir=/usr/share/info --libexecdir=/usr/lib Thread model: single gcc version 4.2.2 /usr/lib/avr/lib/gcc/avr/4.2.2/cc1plus -quiet -v -imultilib avr4 -iprefix /usr/bin/../lib/gcc/avr/4.2.2/ test.cpp -quiet -dumpbase test.cpp -mint8 -mmcu=atmega8535 -auxbase test -g -Os -Wall -Werror -version -o test.s -fno-rtti -fno-enforce-eh-specs -fno-exceptions ignoring nonexistent directory "/usr/bin/../lib/gcc/avr/4.2.2/../../../../../../avr/include/c++/4.2.2" ignoring nonexistent directory "/usr/bin/../lib/gcc/avr/4.2.2/../../../../../../avr/include/c++/4.2.2/avr/avr4" ignoring nonexistent directory "/usr/bin/../lib/gcc/avr/4.2.2/../../../../../../avr/include/c++/4.2.2/backward" ignoring nonexistent directory "/usr/bin/../lib/gcc/avr/4.2.2/include" ignoring nonexistent directory "/usr/bin/../lib/gcc/avr/4.2.2/../../../../../avr/sys-include" ignoring nonexistent directory "/usr/bin/../lib/gcc/avr/4.2.2/../../../../../avr/include" ignoring nonexistent directory "/usr/lib/avr/lib/gcc/avr/4.2.2/../../../../../../avr/include/c++/4.2.2" ignoring nonexistent directory "/usr/lib/avr/lib/gcc/avr/4.2.2/../../../../../../avr/include/c++/4.2.2/avr/avr4" ignoring nonexistent directory "/usr/lib/avr/lib/gcc/avr/4.2.2/../../../../../../avr/include/c++/4.2.2/backward" ignoring nonexistent directory "/usr/lib/avr/lib/gcc/avr/4.2.2/../../../../../avr/sys-include" ignoring nonexistent directory "/usr/lib/avr/lib/gcc/avr/4.2.2/../../../../../avr/include" #include "..." search starts here: #include <...> search starts here: /usr/lib/avr/lib/gcc/avr/4.2.2/include End of search list. GNU C++ version 4.2.2 (avr) compiled by GNU C version 4.1.1 20070105 (ALT Linux, build 4.1.1-alt12). GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: c5330874b383ef69ee2b5cc70c04cc58 test.cpp:1:20: error: avr/io.h: No such file or directory test.cpp: In function 'int main()': test.cpp:4: error: 'uint8_t' was not declared in this scope test.cpp:4: error: expected `;' before 'k' test.cpp:5: error: 'k' was not declared in this scope test.cpp:5: error: 't' was not declared in this scope Так никуда я и не пропадал ;) Добавлять хидеры AVR в системные пути - не разумно (будут сплошные пересечения), именно по этой причине они и лежат в /usr/include/avr. Не вижу проблемы указывать <avr/zzz> или добавлять опци. компилятору. А в avr-* добавить некуда? Несовместимость с winavr получается. Это не удобно. Так и что я туда могу добавить то? Они пересекаются с системными и по названию, и по содержимому. Если сделать их просто доступными по штатным путям, то прийдется вагон остального линукс софта отучать брать avr хидеры, кому это надо? А совместимость с winavr делается легко на уровне Makefile. Если у Вас есть другие правильные решения, продемонстрируйте пожалуйста. У avr линковщик свой. Вот в него и нужно прописать этот путь. (В ответ на комментарий №10) > У avr линковщик свой. Вот в него и нужно прописать этот путь. вернее сказать компилятор свой avr-gcc вот в него и нужно прописать. а как это может повлиять на gcc? Так линковщик хидеры не разгребает, этим препроцессор занимается. При сборке avr-gcc пути с инклюдами указываются именно туда, где они сейчас и лежат. Каким образом его обучить сразу знать данные места? Если имеете готовое решение/patch, с радостью добавлю к нашей сборке. Хорошо. Я по-думаю над этим |