ATNEL tech-forum https://forum.atnel.pl/ |
|
Tworzenie plików przez kompilator https://forum.atnel.pl/topic23047.html |
Strona 1 z 1 |
Autor: | MisterWhite [ 21 kwi 2020, o 12:20 ] |
Tytuł: | Tworzenie plików przez kompilator |
Witam natrafiłem na pewną zagwozdkę której niestety nie potrafię przejść - związaną ze sposobem tworzenia plików przez kompilator Srodowisko: Eclipse 2019_12 Program: L21_UART_ASCII_AT autorstwa Mirka z GB (GreenBook, nie Great Britain) Działanie : Dodanie nowego pliku pilota nec.c i nec.h do katalogu IR_UNI Ponieważ posiadam trochę innego pilota niż występujące w oryginalnym projekcie, więc musiałem stworzyć odpowiednie pliki. Tworzenie ich polegało na przeróbce oryginalnego pliku Mirka dotyczącego SONY SIRCS. Plik został przerobiony i sprawdzony w projekcie Mirka L01_odbiornik_SIRCS (po niezbędnych , kosmetycznych zmianach). Wszystko działało znakomicie, przeróbka była udana. 1.Dołączyłem nowe pliki oznaczone ir_nec.h i ir_nec.c do istniejących już w katalogu IR_UNI- ir_jvc.h,ir_jvc.c,ir_rc5.h,ir_rc5.c,ir_samsung_h,ir_samsung_c,ir_sony.h oraz ir_sony_c. 2.W pliku ir_config dodałem dwa wpisy: a. #define NEC 4 oraz niżej b. # include "ir_nec.h" Czyli reasumując dodałem pliki lub stosowny wpis we wszystkich miejscach gdzie występowały pliki pozostałych ilotów lub ich nazwy. Problem: Przy kompilacji projektu, w konsoli mogę znalaleźć zapis kolejnych działań kompilatora - 'Building file: ../MK_USART/mkuart.c' 'Building file: ../LCD/lcd44780.c' 'Building file: ../IR_UNI/ir_jvc.c' 'Building file: ../IR_UNI/ir_rc5.c' 'Building file: ../IR_UNI/ir_samsung.c' 'Building file: ../IR_UNI/ir_sony.c' 'Building file: ../komendy_at.c' 'Building file: ../main.c' i to tyle w sprawie tworzenia plików, później idą targety itd. Jak widać kompilator całkowicie ignoruje mój IR_UNI/ir_nec.c. Jeśli wybieram któryś z pilotów oryginalnie przewidzianych przez Mirka, projekt kompiluje się prawidłowo i wszystko jest OK. Jeśli jednak wybiorę swój plik pilota, to kompilacja zgłasza błędy wynikające z braku referencji , i projekt nie kompiluje się z uwagą: "make all" terminated with exit code 2. Build might be incomplete. Dwa pytania: 1. Od czego zależy lista tworzonych plików *.c ? 2. Od czego zależy kolejność tworzenia tych plików ? Będę zobowiązany za wszelkie wskazówki. Pozdrawiam W |
Autor: | mirekk36 [ 21 kwi 2020, o 13:15 ] |
Tytuł: | Re: Tworzenie plików przez kompilator |
No weź nie mów, że nie oglądałeś tego poradnika: ------------------------ [ Dodano po: 2 minutach ] Oczywiście kompilator to jedno - a Eclipse samo dodaje WSZYSTKIE pliki *.C które tworzysz w projekcie do kompilacji czyli kompilatorowi na pożarcie |
Autor: | MisterWhite [ 21 kwi 2020, o 18:52 ] |
Tytuł: | Re: Tworzenie plików przez kompilator |
Tak, oczywiście oglądałem poradnik "Jak działa kompilator" i pozwolił mi swojego czasu wyjaśnić sobie wiele wątpliwości. Tym niemniej nie zawiera on odpowiedzi na moje pytania. Może niezbyt jasno wyłożyłem problem , sróbuję więc przybliżyć temat: Biorę gotowy, sprawdzony ,kompilujący się projekt. Do tego projektu dodaję swój dodatkowy zestaw w postaci pliku nagłówkowego nec.h i odpowiadającego mu pliku źródłowego nec.c W oryginalnym projekcie w odpowiednich miejscach dodaję wpisy #include nec.h wskazujące ,że dochodzi jeszcze jeden komplet plików Niestety w trakcie kompilacji projektu są przetwarzane wszystkie oryginalne pliki *.c , poza tym dodanym przeze mnie. Dlaczego kompilator go pomija? Byłem pewien , że jeśli dodane są wpisy #include w odpowiednich miejscach , to powinno to być informacją dla kompilatora aby takie pliki przetworzył. Domyślam się ,że należy tu kierować się podpowiedzią Mirka ,że to Eclise samo dodaje wszystkie pliki *.c do kompilacji. Faktycznie , jak spojrzeć na konsolę , to proces zaczyna się od tworzenia plików C - 'Building file: ../MK_USART/mkuart.c' i tak dalej. A więc trochę inne pytanie - skąd Eclipse wie które pliki *.c dodać do kompilacji i dlaczego ignoruje te nowo dodane? |
Autor: | mirekk36 [ 21 kwi 2020, o 20:11 ] |
Tytuł: | Re: Tworzenie plików przez kompilator |
jak to pomija ? co ty piszesz ... każdy plik *.c który sam dodaje to Eclipse dodaje do kompilacji - poprzez zresztą automatycznie tworzony plik makefile. I UWGA! nie ma to nic a nic wspólnego z twoimi #include .... każdy plik *.c jest kompilowany chyba że świadomie wyłączysz go z kompilacji za pomocą opcji EXCLUDE FROM BUILD |
Autor: | micky [ 21 kwi 2020, o 20:19 ] |
Tytuł: | Re: Tworzenie plików przez kompilator |
Musisz dodać plik do Eclipsa (wskazać mu). |
Autor: | mirekk36 [ 21 kwi 2020, o 20:36 ] |
Tytuł: | Re: Tworzenie plików przez kompilator |
micky napisał(a): Musisz dodać plik do Eclipsa (wskazać mu). Ale przecież nic nie trzeba dodawać w Eclipse Jeśli się stworzy plik *.C gdzieś w folderze czy podfolderze projektu to ECLIPSE sam go doda |
Autor: | MisterWhite [ 21 kwi 2020, o 22:49 ] |
Tytuł: | Re: Tworzenie plików przez kompilator |
mirekk36 napisał(a): Ale przecież nic nie trzeba dodawać w Eclipse Jeśli się stworzy plik *.C gdzieś w folderze czy podfolderze projektu to ECLIPSE sam go doda Przykro mi Mirku, ale wlaśnie w moim przypadku nie. O to się właśnie pytam. Do gotowego projektu L21_UART_ASCII_AT, do katalogu IR_UNI dodaję plik *.h i plik *.c. I w trakcie kompilacji wszystkie inne pliki *.c są kompilowane, a mój dodany plik *.c jest pomijany. Widać to z raportu kompilacji w konsoli. Pytam ponownie - jak to możliwe? |
Autor: | Harry [ 22 kwi 2020, o 00:01 ] |
Tytuł: | Re: Tworzenie plików przez kompilator |
Zakładam że robiłeś clean projektu? Wysłane ze srajfona |
Autor: | MisterWhite [ 22 kwi 2020, o 00:34 ] |
Tytuł: | Re: Tworzenie plików przez kompilator |
Harry napisał(a): Zakładam że robiłeś clean projektu? Tak , oczywiście. Swoje pliki też dodawałem na różne sposoby - zarówno dodajac pliki jak też i tworząc nowe pliki i wklejając ich zawartość, Zastanawia mnie też sprawa związana z drugim pytaniem - podejrzewam ,że może mieć tu kryć się jakieś wyjaśnienie. Mianowicie jak podglądam raport kompilacji w konsoli to najpierw kompilowany jest plik 'Building file: ../MK_USART/mkuart.c' następnie kompilowany jest 'Building file: ../LCD/lcd44780.c' później 'Building file: ../IR_UNI/ir_jvc.c' następnie Building file: ../IR_UNI/ir_rc5.c' kolejno Building file: ../IR_UNI/ir_samsung.c' dalej 'Building file: ../IR_UNI/ir_sony.c' a następnie 'Building file: ../komendy_at.c' i na końcu 'Building file: ../main.c' Skąd taka kolejność? Pliki w drzewie projektu umieszczone są zupełnie inaczej. Od czego to zależy? Zgodnie z tym o czym wspomniał Mirek to Eclipse zarządza kompilacją przez automatycznie tworzony plik makefile. Więc może tu, przy tworzeniu makefile występuje jakiś problem ? ------------------------ [ Dodano po: kilkunastu sekundach ] Harry napisał(a): Zakładam że robiłeś clean projektu? Tak , oczywiście. Swoje pliki też dodawałem na różne sposoby - zarówno dodajac pliki jak też i tworząc nowe pliki i wklejając ich zawartość, Zastanawia mnie też sprawa związana z drugim pytaniem - podejrzewam ,że może mieć tu kryć się jakieś wyjaśnienie. Mianowicie jak podglądam raport kompilacji w konsoli to najpierw kompilowany jest plik 'Building file: ../MK_USART/mkuart.c' następnie kompilowany jest 'Building file: ../LCD/lcd44780.c' później 'Building file: ../IR_UNI/ir_jvc.c' następnie Building file: ../IR_UNI/ir_rc5.c' kolejno Building file: ../IR_UNI/ir_samsung.c' dalej 'Building file: ../IR_UNI/ir_sony.c' a następnie 'Building file: ../komendy_at.c' i na końcu 'Building file: ../main.c' Skąd taka kolejność? Pliki w drzewie projektu umieszczone są zupełnie inaczej. Od czego to zależy? Zgodnie z tym o czym wspomniał Mirek to Eclipse zarządza kompilacją przez automatycznie tworzony plik makefile. Więc może tu, przy tworzeniu makefile występuje jakiś problem ? ------------------------ [ Dodano po: 1 minucie ] MisterWhite napisał(a): Harry napisał(a): Zakładam że robiłeś clean projektu? Tak , oczywiście. Swoje pliki też dodawałem na różne sposoby - zarówno dodajac pliki jak też i tworząc nowe pliki i wklejając ich zawartość, Zastanawia mnie też sprawa związana z drugim pytaniem - podejrzewam ,że może mieć tu kryć się jakieś wyjaśnienie. Mianowicie jak podglądam raport kompilacji w konsoli to najpierw kompilowany jest plik 'Building file: ../MK_USART/mkuart.c' następnie kompilowany jest 'Building file: ../LCD/lcd44780.c' później 'Building file: ../IR_UNI/ir_jvc.c' następnie Building file: ../IR_UNI/ir_rc5.c' kolejno Building file: ../IR_UNI/ir_samsung.c' dalej 'Building file: ../IR_UNI/ir_sony.c' a następnie 'Building file: ../komendy_at.c' i na końcu 'Building file: ../main.c' Skąd taka kolejność? Pliki w drzewie projektu umieszczone są zupełnie inaczej. Od czego to zależy? Zgodnie z tym o czym wspomniał Mirek to Eclipse zarządza kompilacją przez automatycznie tworzony plik makefile. Więc może tu, przy tworzeniu makefile występuje jakiś problem ? |
Autor: | Harry [ 22 kwi 2020, o 02:44 ] |
Tytuł: | Re: Tworzenie plików przez kompilator |
A spróbuj do tego includowanego pliku wrzucić jakaś inną zawartość(może być cokolwiek, nawet mignięcie pinem). Wtedy będzie wiadomo, czy on go nie kompiluje bo jest jakiś błąd w pliku, czy go nie widzi. Wysłane ze srajfona |
Autor: | mirekk36 [ 22 kwi 2020, o 06:24 ] |
Tytuł: | Re: Tworzenie plików przez kompilator |
MisterWhite napisał(a): Więc może tu, przy tworzeniu makefile występuje jakiś problem ? Nie występuje żaden problem - lepiej pokaż zrzut ekranu ze swojego Eclipsa tzn z całego drzewka projektu to wtedy będzie można podpowiedzieć gdzie robisz błąd bo niestety musisz robić jakiś okrutny błąd ------------------------ [ Dodano po: 4 minutach ] a jak znam życie i takie ala nietypowe przypadki - że niby " Eclipse się zepsuł " ... to czuję pismo nosem że np dałeś złe rozszerzenie np *.C zamiast *.c i wtedy nie masz co nawet marzyć, że Eclipse doda do kompilacji jakiś nieznany sobie plik i nie ma co się dziwić, bo duże i małe litery mają znaczenie nie tylko w kodzie. Dlatego piszę żebyś pokazał dokładne zrzuty ekranu ze swojego Eclipsa. |
Autor: | Harry [ 22 kwi 2020, o 06:30 ] |
Tytuł: | Re: Tworzenie plików przez kompilator |
Mirku, może być jeszcze problem z samą biblioteką, do tego stopnia że kompilator puścił pawia Wysłane ze srajfona |
Autor: | mirekk36 [ 22 kwi 2020, o 06:33 ] |
Tytuł: | Re: Tworzenie plików przez kompilator |
Harry napisał(a): Mirku, może być jeszcze problem z samą biblioteką, do tego stopnia że kompilator puścił pawia Wysłane ze srajfona No tak ale wtedy jednak ślady pawia byłyby bardzo widoczne w CONSOLI po kompilacji byłoby widać każdy niestrawiony kawałek groszku czy marchewki w tym przypadku idę o zakład że chodzi o prosty czeski błąd który robi autor i pierwsze co mi przychodzi do głowy to właśnie TO co wyżej opisałem. |
Autor: | Harry [ 22 kwi 2020, o 06:34 ] |
Tytuł: | Re: Tworzenie plików przez kompilator |
A czy w takim wypadku, kompilator nie powinien zgłosić błędu że niema pliku? Wysłane ze srajfona |
Autor: | mirekk36 [ 22 kwi 2020, o 06:47 ] |
Tytuł: | Re: Tworzenie plików przez kompilator |
Harry napisał(a): A czy w takim wypadku, kompilator nie powinien zgłosić błędu że niema pliku? Ależ skąd - to byłoby niestety czyste szaleństwo i np ja bym sobie nie życzył, żeby mi zgłaszał niechciane pliki co więcej jeszcze raz podkreślę że kompilator niczego nie może zgłosić - bo to sam Eclipse dodaje pliki ... ale już wyjaśniam co miałem na myśli pisząc "niechciane" a przecież chciane przeze mnie pliki Jak zapewne nie raz zauważyliście, w moich projektach ja CZĘSTO - szczególnie gdy tworzę coś ważnego, komercyjnego - to dodaję do głównego folderu np pliki PDF ze schematem, żeby zawsze mieć pod ręką, jakieś pliki JPG albo PNG a nawet filmiki *.mp4 z poglądowym widokiem urządzenia itd itp czy chciałbyś wtedy Harry, żeby za każdą kompilacją kompilator się darł, że nie mógł dołączyć takich plików ? ... po to mamy rozszerzenia ... no i na koniec KAŻDY może sobie zrobić taki prosty test 1. stwórz we własnym projekcie plik test.C 2. wpisz do niego jakieś bzdety - żeby zadziałało jak środek na wymioty dla kompilatora 3. Puść kompilację w Eclipse i co ? Okaże się, że Eclipse w ogóle nie tknie tego czegoś co ma rozszerzenie *.C ale za to z przyjemnością zmizia wszystko co ma rozszerzenie *.c ------------------------ [ Dodano po: 4 minutach ] Zresztą podobnie zachowa się MkClipse tyle że jak spróbujesz w nim założyć nowy plik *.C to MkClipse Będzie się dzielnie bronił i sam na siłę doda jednak rozszerzenie *.c i wyjdzie ci "Test.C.c" ale przynajmniej wtedy MkClipse go skompiluje. Jeśli zaś sam ręcznie zmienisz to rozszerzenie na *.C to wtedy MkClipse splunie przez lewe ramię i nie będzie miziać tego pliku TAK samo jak Eclipse .. Przy czym ja w MkClipse w ogóle nie tworzę i nie bawię się ŻADNYM makefile - nie ma śladu po czymś takim - a zobaczcie że wszystko się zwykle pięknie kompiluje w MkClipse |
Autor: | Harry [ 22 kwi 2020, o 06:56 ] |
Tytuł: | Re: Tworzenie plików przez kompilator |
Chodziło mi o brak zainkludowanego pliku. Wysłane ze srajfona |
Autor: | mirekk36 [ 22 kwi 2020, o 07:06 ] |
Tytuł: | Re: Tworzenie plików przez kompilator |
Harry napisał(a): Chodziło mi o brak zainkludowanego pliku. Ale to ZAWSZE zgłosi i autor nie pisze tu o braku zainkludowanego pliku - bo inkludujesz panie kochany pliki *.h (przypominam) a nie *.c - więc jak może zgłosić brak ? Oczywiście ja sobie zdaję sprawę, że wielu ludzi kojarzy to w ten sposób, że kompilator kompiluje te pliki które ja rzekomo sobie zainkluduję - że skojarzy nazwę pliku *.h z nazwą *.c ale nie ma nic bardziej mylnego ... można sobie bowiem stworzyć t_konfig.h test.c i co? rzekomo kompilator miałby po takiej nazwie pliku *.h sam się czegoś domyśleć ? Inkludowanie plików *.h to tak jak dołączanie do *.c kawałka kodu źródłowego (paru dodatkowych linijek do pliku *.c) ... Same pliki *.h nie są przecież kompilowane bo nie mogą być kompilowane a ja mogę sobie ich natworzyć jak mrówek zobacz np mój folder biblioteki do CAN w folderze głównym same pliki *.h i tylko jeden inkludujemy w naszym main.c zaś one są też inkludowane w innych plikach biblioteki w odpowiedni sposób |
Autor: | Harry [ 22 kwi 2020, o 07:13 ] |
Tytuł: | Re: Tworzenie plików przez kompilator |
No w sumie fakt, myślałem o plikach nagłówkowych, pisząc o .c, pewnie to późna pora Najlepiej będzie jak kolega MisterWhite wrzuci wszystko co wypluwa konsola, bo tak to można gdybać bez końca Wysłane ze srajfona |
Autor: | mirekk36 [ 22 kwi 2020, o 07:23 ] |
Tytuł: | Re: Tworzenie plików przez kompilator |
Harry napisał(a): Najlepiej będzie jak kolega MisterWhite wrzuci wszystko co wypluwa konsola No tylko z tego co mówi to konsola mu nie wypluwa tego pliku więc poza całą konsolą to jeszcze niech pokaże zrzut ekranu z całego drzewka projektu |
Autor: | Harry [ 22 kwi 2020, o 07:29 ] |
Tytuł: | Re: Tworzenie plików przez kompilator |
Ale może wypluwa coś innego, z pozoru nieistotnego, a jednak mającego wpływ na to co się dzieje. Wysłane ze srajfona |
Autor: | mirekk36 [ 22 kwi 2020, o 11:12 ] |
Tytuł: | Re: Tworzenie plików przez kompilator |
Harry napisał(a): Ale może wypluwa coś innego, z pozoru nieistotnego, a jednak mającego wpływ na to co się dzieje. a tak - tak to oczywiście racja więc czekamy - licząc też na to że autor sobie poczyta to wszystko wyżej na początek |
Autor: | mirekk36 [ 22 kwi 2020, o 11:26 ] |
Tytuł: | Re: Tworzenie plików przez kompilator |
no to teraz zobacz czy nie masz tego pliku w EXCLUDACH z projektu ... albo spakuj cały projekt do ZIP i podeślij mi na maila biuro@atnel.pl a nie na forum to sprawdzę w 5 sekund |
Autor: | MisterWhite [ 22 kwi 2020, o 14:54 ] |
Tytuł: | Re: Tworzenie plików przez kompilator |
Bardzo Mirku dziękuję za pomoc , zajety czasoraz wyczerpujące i dogłębne omówienie tematu. Generalnie rzecz biorąc moim podstawowym błędem było - jak mi pokazałeś - pozostawienie atrybutów plików "tylko do odczytu". Rzeczywiście , importowałem projekt z płyty dołączonej do GB i nie przyszło i do głowy że trzeba sprawdzić coś takiego jak atrybuty. Mea Culpa. Natomiast co do reszty masz oczywiście stuprocentowa rację - ale wyszło pewne nieporozumienie, całkowicie zresztą zawinione przeze mnie. Mianowicie ja te wszystkie zmiany o których mówiłeś wprowadziłem w projekcie - na dowód ,że nie próbuję pokazać się w lepszym świetle przytoczę fragment mojego pierwszego postu od którego zaczął się wątek: Cytuj: 1.Dołączyłem nowe pliki oznaczone ir_nec.h i ir_nec.c do istniejących już w katalogu IR_UNI- ir_jvc.h,ir_jvc.c,ir_rc5.h,ir_rc5.c,ir_samsung_h,ir_samsung_c,ir_sony.h oraz ir_sony_c. 2.W pliku ir_config dodałem dwa wpisy: a. #define NEC 4 oraz niżej b. # include "ir_nec.h" Czyli reasumując dodałem pliki lub stosowny wpis we wszystkich miejscach gdzie występowały pliki pozostałych ilotów lub ich nazwy. Jednakże to był projekt UART_ASCII_AT2. I z nim miałem problem. W trakcie "walki" coś musiałem jednak gdzieś niechcący uszkodzić, bo nagle w trakcie kompilacji wersji RC5 zaczął pojawiać się błąd kompilacji. Nie chcąc już szukać co popsułem ponownie zaimportowałem do tego samego workspace Twój projekt , oznaczając go dla odróżnienia UART_ASCII_AT3. Oczywiście znów nie dotknąłem zadnych atrybutów , dodałem jedynie swoje ir_nec.h i ir_nec.c , sprawdziłem ,że jak i poprzednio nie kompiluje się mój dodany plik *.c i zapominając o ponowym wprowadzeniu poprawek do pliku ir_config.h wyslałem do biura Atnel. Tak więc niestety wykazłem się nie tylko brakiem wiedzy ale też roztargnieniem. Jeszcze raz bardzo przepraszam za zajęty czas i jeśli to Cię choć trochę usatysfakcjonuje - czuję się bardzo zawstydzony. Tym bardziej ,że gdy wprowadzałem wpisy do pliku ir_config.h mój W10 powiedział mi że plik jest do odczytu i spytał czy zmienić jego atrybut. Oczywiście potwierdziłem, ale nie przyszło mi do głowy aby zrobić to z pozostałymi plikami. Sorry .... Pozdrawiam W |
Autor: | mirekk36 [ 22 kwi 2020, o 18:19 ] |
Tytuł: | Re: Tworzenie plików przez kompilator |
ale ani ja nie pisałem żeby kogoś zawstydzić ani nie przynosi mi to żadnej satysfakcji - cóż za pomysł. Za to uważam, że padły tu często zadawane pytania i warto w takich wątkach pewne rzeczy wyjaśnić do KOŃCA a przede wszystkim po to żeby ludziom nie przychodziły pomysły do głowy, że np właśnie zepsuł się Eclipse i nie piszę tego z ironią - tylko no niestety część osób tak ma i niesłusznie - może na takich przykładach się nauczą odrzucać takie podejście po prostu. Bo często też dochodzi roztargnienie - a bo to mnie się takie rzeczy nie zdarzają ? |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |