Forum Linux.pl
Programowanie => C/C++ => Wątek zaczęty przez: w 2015-09-19, 12:35:27
-
Mam problem. Otóż przy kompilowaniu programu normalnie przez gcc na moim głównym komputerze wszystko gra, a na komputerze zastępczym program się nie uruchamia. Wersja 64 bitowa programu działa dobrze na obu systemach. problem z wersją 32bitową jest związany z błędem, że nie ma takiego pliku ani katalogu.
Pewnie muszę ustawić jakąś flagę -march, by to działało, ale nie wiem, jaką. i386, i586 i686 nie działają na moim laptopie. i386 był pierwszym mikroprocesorem z pełnym trybem chronionym stworzonym przez Intela. Jak skompilować ten program?
-
wersji 64bit nie uruchomisz na 32bit,
32 bit wersji na 64bit tak.
W mojej dystrybucji kompiluje się
32bit na 32bit systemie
64 bit na 64 bit systemie
Jesli ktoś poda przepis jak zrobić aplikacje noarch to ja też się zamienie w słuch :)
-
wersji 64bit nie uruchomisz na 32bit,
32 bit wersji na 64bit tak.
W mojej dystrybucji kompiluje się
32bit na 32bit systemie
64 bit na 64 bit systemie
Jesli ktoś poda przepis jak zrobić aplikacje noarch to ja też się zamienie w słuch :)
Dla nioarcha potrzebujesz skryptu powłoki (shell-a) z dodanymi plikami wykonywalnymi dla różnych architektur. Następnie wykonujesz uname i pobierasz informacje o architekturze.
-
Moje pytanie było inne. Zwyczajnie mam problem, że przy próbie uruchomienia pliku pobranego z sourceforge, który działa mi na komputerze, nie działa on na komputerze z Ubuntu. Jest to jakby zwykły program konsolowy, a więc powinien działać na wielu komputerach. Wyskakuje komunikat, że nie ma takiego pliku.
-
Jak długo nie podasz, co to za program - a najlepiej link do niego na SF - tak długo nie będziemy w stanie pomóc.
* Jaki dokładnie komunikat dostajesz?
* Czy jest tak, że program kompilujesz na jednym a uruchamiasz na drugim komputerze?
* Co o niedziałającym programie mówi polecenie ldd? Czy wszystkie biblioteki są dostępne?
* Czy program uruchamiasz z ./ na początku, albo z katalogu ze zmiennej $PATH?
-
1. Nie ma takiego pliku ani katalogu
2. Dokładnie
3. Nie pamiętam,ale chyba nie ma takiego pliku, ani katalogu - sprawdzę potem
4. Uruchamiam go z obecnego katalogu roboczego, ale bez ./ na początku -jednak uruchamiam też w ten sam sposób wersję 64 bitową
link do sourceforge:
https://sourceforge.net/projects/libgreattao/
Trzeba uruchomić skrypt Installer/create_installer.sh
Wygeneruje to trzy instalatory - jeden dla x86, drugi x86_64, a trzecim dla obu architektur.
-
Od końca:
4/ Standardowa konfiguracja Linuksa (w odróżnieniu od Windows) nie zawiera w ścieżce wyszukiwania katalogu bieżącego. Dlatego, jeżeli program nie jest w katalogu wymienionym w $PATH, musisz podać katalog, z którego trzeba program uruchomić. Jeżeli to katalog bieżący, ./ jest obligatoryjne.
3/ i 1/ wynikają z 4/
Co do samego programu - sorry, nie chcę sobie syfić systemu programem od razu wołąjącym o prawa roota bez potrzeby.
-
Co do praw root-a, to masz rację, ale stworzyłem bibliotekę systemową, a więc instalator musi ją instalować gdzieś w /usr.
W niektórych dystrybucjach CWD jest dodawane do path. Może faktycznie nie w Ubuntu.
Jak chcesz sprawdzić, to ściągnij źródła, sprawdź zawartość Makefile, wykonaj make all INSTALPATH=$HOME/cosik, a następnie make INSTALLPATH=$HOME/cosik install
Następnie make -C Demos i uruchamiasz dema.
-
Żeby jednak wszystko działało, to musisz ściągnąć libsell i zainstalować do katalogu libgreattao, a następnie ustawić LD_LIBRARY_PATH
-
PS:
ale stworzyłem bibliotekę systemową, a więc instalator musi ją instalować gdzieś w /usr.
Pomyśl kiedyś o aplikacjach portable.
-
No, masz rację - aplikacje portable są czymś lepszym, ale mimo wszystko nadal chcę utworzyć ten instalator.
Utworzę jakoś paczki dla Ubuntu.