Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 编译时未找到库_C - Fatal编程技术网

C 编译时未找到库

C 编译时未找到库,c,C,我在尝试编译C项目时遇到了一个问题。 我的文件夹包含一个.c、一个.h、我的库目录和一些文本文件 当使用我自己的main.c(gcc get_next_line.c main.c Libft/Libft.a)手动编译时,每个人都可以正常工作。 不过,我使用一个脚本来通过单元测试,当我启动它时,它会给我这种类型的错误(出现的函数是我的库中在my.c中使用的函数) 在朋友的计算机上运行相同的脚本时,编译工作正常。 我没有把所有的东西都放在这里(我在这个脚本中使用的Makefile中有很多代码),但是

我在尝试编译C项目时遇到了一个问题。 我的文件夹包含一个.c、一个.h、我的库目录和一些文本文件

当使用我自己的main.c(
gcc get_next_line.c main.c Libft/Libft.a
)手动编译时,每个人都可以正常工作。 不过,我使用一个脚本来通过单元测试,当我启动它时,它会给我这种类型的错误(出现的函数是我的库中在my.c中使用的函数)

在朋友的计算机上运行相同的脚本时,编译工作正常。 我没有把所有的东西都放在这里(我在这个脚本中使用的Makefile中有很多代码),但是如果有人需要一些精确性,我很乐意尝试并提供它们

编辑:我将复制尝试获取编译时获得的所有文本:

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
(我做了一些编辑,shell just中的输出不可读)


提前感谢您的帮助。

这两行是主要问题:

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 $@ -I./includes

$(NAME): $(OBJS)
<tab>ar -rcs $@ $^
SRCS:=$(通配符SRCS/*.c)
OBJS:=$(SRCS.o:.c)
CFLAGS:=-Wall-Wextra-Werror-ggdb
名称:=libmt_framework.a
冒牌货:全部
全部:$(名称)
*.o:*.c
gcc$(CFLAGS)$<-o$@-I./包括
$(名称):$(OBJS)
ar-rcs$@$^
创建可执行文件时应引用任何库

比如:

$(EXECNAME): $(NEW_OBJS)
<tab>gcc -static -o $@ $^ $(LFLAGS) -LpathtoLibrary -lshortlibraryName 
$(EXECNAME):$(新建)
gcc-static-o$@$^$(LFLAGS)-LpathtoLibrary-lshortlibraryName

<>代码>您想让我们考虑的任何错误消息都在问题本身中,而不是在外部服务中。文本形式远比图像更受欢迎。复制粘贴是您的朋友。请将错误发布在此处,而不是图片中。当图片最终消失时,你的问题对每个人都没有用处。也许你需要添加一些
-lxxx
选项来链接程序所需的动态库。不要发布指向代码和错误消息图像外部来源的链接。只需在问题中的此处发布您的代码和错误。请同时显示整个编译器调用,而不仅仅是错误