Mam bibliotekę, którą buduję. Wszystkie moje przedmioty skompilować i łącze kolejno po uruchomieniu jednej z: ar rcs lib/libryftts.a $^
GCC tworzy obiekt współdzielony zamiast wykonywalnego pliku binarnego
gcc -shared $^ -o lib/libryftts.so
w moim Makefile. Mogę też z powodzeniem zainstalować je w /usr/local/lib
Gdy testuję plik za pomocą nm, wszystkie funkcje są dostępne. Moim problemem jest to, że gdy uruchamiam gcc testing/test.c -lryftts -o test && file ./test
lub gcc testing/test.c lib/libryftts.a -o test && file ./test
mówi:
test: ELF 64-bit LSB shared object
zamiast test: ELF 64-bit LSB executable
jak bym się spodziewał. Co ja robię źle?
Czy Twój plik 'test.c' zawiera' główny'? –
@EugeneSh. Tak, zawiera główne. –
Brzmi dziwnie. Ale prawdopodobnie potrzebować więcej informacji, aby zdiagnozować problem. Sugerujemy utworzenie minimalnego przypadku testowego i opublikowanie dokładnego kodu i poleceń kompilacji użytych do wytworzenia problemu. Możesz również uruchomić ostatnią linię kompilacji za pomocą 'gcc -v', aby zobaczyć dokładnie, jakie polecenia i opcje naprawdę używa gcc. – kaylum