2016-02-10 2 views
-5

Я сталкиваюсь с проблемой при попытке скомпилировать проект C. Моя папка содержит один .c, один .h, мою библиотечную директорию и несколько текстовых файлов.Библиотека не найдена при компиляции

При сборке вручную с моим собственным main.c (gcc get_next_line.c main.c Libft/libft.a) все работают нормально. Я использую скрипт для передачи модульных тестов, хотя это дает мне такую ​​ошибку при запуске (появляются функции в моей библиотеке, которые используются в моем .c).

При работе с тем же скриптом на компьютере друга компиляция работает нормально. Я не ставил все здесь (есть тонны кода в Makefile, который я использую для этого скрипта), но если кто-то нуждается в некоторых исправлениях, я буду рад попытаться их предоставить.

http://imgur.com/hKcQNMP

EDIT: Я буду копировать весь текст, что я получил при попытке получить подборку:

make gnl 
find: /nfs/zfs-student-2/users/acottier/Taf/GNL/includes: No such file or directory 
find: /nfs/zfs-student-2/users/acottier/Taf/GNL/srcs: No such file or directory 
make exec_tests 
find: /nfs/zfs-student-2/users/acottier/Taf/GNL/includes: No such file or directory 
find: /nfs/zfs-student-2/users/acottier/Taf/GNL/srcs: No such file or directory 
echo "tests/01_test_simple.spec.c 
     tests/02_test_eof_with_close.spec.c 
     tests/03_test_medium_string.spec.c 
     tests/04_test_return_values.spec.c 
     tests/05_test_error_handling.spec.c 
     tests/06_test_line_of_08.spec.c 
     tests/07_test_two_lines_of_08.spec.c 
     tests/08_test_few_lines_of_08.spec.c 
     tests/09_test_line_of_16.spec.c 
     tests/10_test_two_lines_of_16.spec.c 
     tests/11_test_few_lines_of_16.spec.c 
     tests/12_test_line_of_4.spec.c 
     tests/13_test_two_lines_of_4.spec.c 
     tests/14_test_few_lines_of_4.spec.c 
     tests/15_test_line_without_nl.spec.c 
     tests/16_test_line_of_8_without_nl.spec.c 
     tests/17_test_line_of_16_without_nl.spec.c 
     tests/30_bonus_multiple_fd.spec.c 
     tests/40_hard_test_medium_string.spec.c 
     tests/41_hard_test_large_file.spec.c 
     tests/42_hard_test_one_big_fat_line.spec.c" 
     tests/01_test_simple.spec.c 
     tests/02_test_eof_with_close.spec.c 
     tests/03_test_medium_string.spec.c 
     tests/04_test_return_values.spec.c 
     tests/05_test_error_handling.spec.c 
     tests/06_test_line_of_08.spec.c 
     tests/07_test_two_lines_of_08.spec.c 
     tests/08_test_few_lines_of_08.spec.c 
     tests/09_test_line_of_16.spec.c 
     tests/10_test_two_lines_of_16.spec.c 
     tests/11_test_few_lines_of_16.spec.c 
     tests/12_test_line_of_4.spec.c 
     tests/13_test_two_lines_of_4.spec.c 
     tests/14_test_few_lines_of_4.spec.c 
     tests/15_test_line_without_nl.spec.c 
     tests/16_test_line_of_8_without_nl.spec.c 
     tests/17_test_line_of_16_without_nl.spec.c 
     tests/30_bonus_multiple_fd.spec.c 
     tests/40_hard_test_medium_string.spec.c 
     tests/41_hard_test_large_file.spec.c 
     tests/42_hard_test_one_big_fat_line.spec.c 
make re -k -C /nfs/zfs-student-2/users/acottier/Taf/GNL/libft 
Object files deleted. 
Library deleted. 
Compilation finished. 
make -k -C ../testframework/v3/ 
rm -f *.o 
gcc -Wall -Werror -Wextra -ggdb -I includes -c srcs/**/*.c 
ar rc libmt_framework.a *.o 
gcc -g -I . -I ../testframework/v3//includes 
     -I /nfs/zfs-student-2/users/acottier/Taf/GNL 
     -I /nfs/zfs-student-2/users/acottier/Taf/GNL/includes 
     -I /nfs/zfs-student-2/users/acottier/Taf/GNL/includes/builtin 
     -I /nfs/zfs-student-2/users/acottier/Taf/GNL/libs/libtowel/includes -D__MOULITEST__ -DPROTOTYPES= 
     "MT_ADD_PROTO(01_test_simple); 
     MT_ADD_PROTO(02_test_eof_with_close); 
     MT_ADD_PROTO(03_test_medium_string); 
     MT_ADD_PROTO(04_test_return_values); 
     MT_ADD_PROTO(05_test_error_handling); 
     MT_ADD_PROTO(06_test_line_of_08); 
     MT_ADD_PROTO(07_test_two_lines_of_08); 
     MT_ADD_PROTO(08_test_few_lines_of_08); 
     MT_ADD_PROTO(09_test_line_of_16); 
     MT_ADD_PROTO(10_test_two_lines_of_16); 
     MT_ADD_PROTO(11_test_few_lines_of_16); 
     MT_ADD_PROTO(12_test_line_of_4); 
     MT_ADD_PROTO(13_test_two_lines_of_4); 
     MT_ADD_PROTO(14_test_few_lines_of_4); 
     MT_ADD_PROTO(15_test_line_without_nl); 
     MT_ADD_PROTO(16_test_line_of_8_without_nl); 
     MT_ADD_PROTO(17_test_line_of_16_without_nl); 
     MT_ADD_PROTO(30_bonus_multiple_fd); 
     MT_ADD_PROTO(40_hard_test_medium_string); 
     MT_ADD_PROTO(41_hard_test_large_file); 
     MT_ADD_PROTO(42_hard_test_one_big_fat_line); " 
     -DADD_TESTS= 
     "MT_ADD_SUITE(mt, 01_test_simple, suite_01_test_simple); 
     MT_ADD_SUITE(mt, 02_test_eof_with_close, suite_02_test_eof_with_close); 
     MT_ADD_SUITE(mt, 03_test_medium_string, suite_03_test_medium_string); 
     MT_ADD_SUITE(mt, 04_test_return_values, suite_04_test_return_values); 
     MT_ADD_SUITE(mt, 05_test_error_handling, suite_05_test_error_handling); 
     MT_ADD_SUITE(mt, 06_test_line_of_08, suite_06_test_line_of_08); 
     MT_ADD_SUITE(mt, 07_test_two_lines_of_08, suite_07_test_two_lines_of_08); 
     MT_ADD_SUITE(mt, 08_test_few_lines_of_08, suite_08_test_few_lines_of_08); 
     MT_ADD_SUITE(mt, 09_test_line_of_16, suite_09_test_line_of_16); 
     MT_ADD_SUITE(mt, 10_test_two_lines_of_16, suite_10_test_two_lines_of_16); 
     MT_ADD_SUITE(mt, 11_test_few_lines_of_16, suite_11_test_few_lines_of_16); 
     MT_ADD_SUITE(mt, 12_test_line_of_4, suite_12_test_line_of_4); 
     MT_ADD_SUITE(mt, 13_test_two_lines_of_4, suite_13_test_two_lines_of_4); 
     MT_ADD_SUITE(mt, 14_test_few_lines_of_4, suite_14_test_few_lines_of_4); 
     MT_ADD_SUITE(mt, 15_test_line_without_nl, suite_15_test_line_without_nl); 
     MT_ADD_SUITE(mt, 16_test_line_of_8_without_nl, suite_16_test_line_of_8_without_nl); 
     MT_ADD_SUITE(mt, 17_test_line_of_16_without_nl, suite_17_test_line_of_16_without_nl); 
     MT_ADD_SUITE(mt, 30_bonus_multiple_fd, suite_30_bonus_multiple_fd); 
     MT_ADD_SUITE(mt, 40_hard_test_medium_string, suite_40_hard_test_medium_string); 
     MT_ADD_SUITE(mt, 41_hard_test_large_file, suite_41_hard_test_large_file); 
     MT_ADD_SUITE(mt, 42_hard_test_one_big_fat_line, suite_42_hard_test_one_big_fat_line); 
     " -DRENDU_PATH="\"/nfs/zfs-student-2/users/acottier/Taf/GNL\" 
     " tests/01_test_simple.spec.c 
     tests/02_test_eof_with_close.spec.c 
     tests/03_test_medium_string.spec.c 
     tests/04_test_return_values.spec.c 
     tests/05_test_error_handling.spec.c 
     tests/06_test_line_of_08.spec.c 
     tests/07_test_two_lines_of_08.spec.c 
     tests/08_test_few_lines_of_08.spec.c 
     tests/09_test_line_of_16.spec.c 
     tests/10_test_two_lines_of_16.spec.c 
     tests/11_test_few_lines_of_16.spec.c 
     tests/12_test_line_of_4.spec.c 
     tests/13_test_two_lines_of_4.spec.c 
     tests/14_test_few_lines_of_4.spec.c 
     tests/15_test_line_without_nl.spec.c 
     tests/16_test_line_of_8_without_nl.spec.c 
     tests/17_test_line_of_16_without_nl.spec.c 
     tests/30_bonus_multiple_fd.spec.c 
     tests/40_hard_test_medium_string.spec.c 
     tests/41_hard_test_large_file.spec.c 
     tests/42_hard_test_one_big_fat_line.spec.c 
     main.c utils.c /nfs/zfs-student-2/users/acottier/Taf/GNL/get_next_line.c -o get_next_line_tests -L../testframework/v3/ -lmt_framework 
Undefined symbols for architecture x86_64: 
    "_ft_strclr", referenced from: 
     _get_next_line in get_next_line-b43645.o 
    "_ft_strdupchr", referenced from: 
     _ft_traitement in get_next_line-b43645.o 
     _ft_nettoyage in get_next_line-b43645.o 
    "_ft_strjoin", referenced from: 
     _ft_traitement in get_next_line-b43645.o 
    "_ft_strlen", referenced from: 
     _ft_traitement in get_next_line-b43645.o 
    "_ft_strlenchr", referenced from: 
     _ft_traitement in get_next_line-b43645.o 
     _ft_nettoyage in get_next_line-b43645.o 
    "_ft_strnew", referenced from: 
     _get_next_line in get_next_line-b43645.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

make[2]: *** [exec_tests] Error 1 
make[1]: *** [all] Error 2 
make: *** [get_next_line] Error 2 

(я сделал некоторые изменения, выход в Juste оболочки не читаемый)

Заранее за вашу помощь.

+2

Любые сообщения об ошибках, которые вы хотите, чтобы мы рассмотрим идти * в самом вопросе *, а не в качестве внешней службы. И текстовая форма гораздо предпочтительнее изображений. Скопировать и вставить - ваш друг. –

+3

Отправьте сообщение об ошибке здесь, а не на картинке. Когда изображение сойдет на нет, ваш вопрос станет бесполезным для всех. – Martin

+1

Возможно, вам нужно добавить некоторые опции '-lxxx' для связи с динамической библиотекой, требуемой вашей программой. –

ответ

0

этих двух линий являются основными проблемами:

gcc -Wall -Werror -Wextra -ggdb -I includes -c srcs/**/*.c 
ar rc libmt_framework.a *.o 

Предлагайте:

SRCS := $(WILDCARD srcs/*.c) 
OBJS := $(SRCS.o:.c) 

CFLAGS := -Wall -Wextra -Werror -ggdb 

NAME := libmt_framework.a 

.PHONY: all 
all: $(NAME) 

*.o: *.c 
<tab>gcc $(CFLAGS) $< -o [email protected] -I./includes 

$(NAME): $(OBJS) 
<tab>ar -rcs [email protected] $^ 

какие-либо библиотеки должны ссылаться при создании исполняемого файла.

что-то вроде:

$(EXECNAME): $(NEW_OBJS) 
<tab>gcc -static -o [email protected] $^ $(LFLAGS) -LpathtoLibrary -lshortlibraryName 
Смежные вопросы