忽略文件lib.a,文件是专为存档而不是被连接的架构下(x86_64) [英] ignoring file lib.a, file was built for archive which is not the architecture being linked (x86_64)

查看:462
本文介绍了忽略文件lib.a,文件是专为存档而不是被连接的架构下(x86_64)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想code printf的克隆。我已经建立了所谓的libftprintf.a但是当我尝试使用它,我收到以下错误,在Mac OSX 10.8.5库文件:

  LD:警告:忽略文件./libftprintf.a,文件是专为存档而不是被连接的架构下(x86_64):./libftprintf.a

奇怪的是这工作正常(但我只需要一个lib目录名为libftprintf,所以这是不能接受的):

 的gcc -Wall -Wextra -Werror -I libft /包括/ -o ft_printf_test.bin -L libft -lft -L。 -lftprintf ft_printf_test.c

我怀疑我已经滥用了 AR 命令这两个库链接在一起。但我不瑟我的错误呢。

什么可能是认为原因是什么?

一切似乎编译就好了,直到我尝试使用 libftprintf.a 做测试命令文件。我搜索在谷歌的解决方案,但大多数的答案涉及到只适用于X code。据脂-info ,该文件是x86_64的。

我的GCC版本:

  $> GCC --version
preFIX =的/ usr --with-GXX-包括-DIR = / usr / include目录/ C ++ / 4.2.1 - :与配置
(基于LLVM 3.3svn)苹果LLVM 5.0版(铛-500.2.79)
目标:x86_64的 - 苹果darwin12.5.0
线程模型:POSIX

下面是我的makefile全力输出,以供参考。

  $>制作重
使-C libft干净
RM -f的src / ft_arrdel.o的src / ft_atoi.o的src / ft_bzero.o的src / ft_isalnum.o的src / ft_isalpha.o的src / ft_isascii.o的src / ft_isdigit.o的src / ft_islower.o的src / ft_isprint.o的src / ft_isupper.o的src / ft_itoa.o的src / ft_lstadd.o的src / ft_lstdel.o的src / ft_lstdelone.o的src / ft_lstiter.o的src / ft_lstmap.o的src / ft_lstnew.o的src / ft_lstpush.o的src / ft_malloc.o的src / ft_memalloc.o的src / ft_memccpy.o的src / ft_memchr.o的src / ft_memcmp.o的src / ft_memcpy.o的src / ft_memdel.o的src / ft_memmove.o的src / ft_memset.o的src / ft_putchar.o的src / ft_putchar_fd.o的src / ft_putendl.o的src / ft_putendl_fd.o的src / ft_putnbr.o的src / ft_putnbr_fd.o的src / ft_putstr.o的src / ft_putstr_fd.o的src / ft_strcat.o的src / ft_strchr.o的src / ft_strclr.o的src / ft_strcmp.o的src / ft_strcpy.o的src / ft_strdel.o的src / ft_strdup.o的src / ft_strequ.o的src / ft_striter.o的src / ft_striteri.o的src / ft_strjoin.o的src / ft_strlcat.o的src / ft_strlen.o的src / ft_strmap.o的src / ft_strmapi.o的src / ft_strncat.o的src / ft_strncmp.o的src / ft_strncpy.o的src / ft_strnequ.o的src / ft_strnew.o的src / ft_strnstr.o的src / ft_strrchr.o的src / ft_strrev.o的src / ft_strsplit.o的src / ft_strstr.o的src / ft_strsub.o的src / ft_strtrim.o的src / ft_tolower.o的src / ft_toupper.o的src / get_next_line.o
RM -f ft_printf.o
使-C libft fclean
RM -f的src / ft_arrdel.o的src / ft_atoi.o的src / ft_bzero.o的src / ft_isalnum.o的src / ft_isalpha.o的src / ft_isascii.o的src / ft_isdigit.o的src / ft_islower.o的src / ft_isprint.o的src / ft_isupper.o的src / ft_itoa.o的src / ft_lstadd.o的src / ft_lstdel.o的src / ft_lstdelone.o的src / ft_lstiter.o的src / ft_lstmap.o的src / ft_lstnew.o的src / ft_lstpush.o的src / ft_malloc.o的src / ft_memalloc.o的src / ft_memccpy.o的src / ft_memchr.o的src / ft_memcmp.o的src / ft_memcpy.o的src / ft_memdel.o的src / ft_memmove.o的src / ft_memset.o的src / ft_putchar.o的src / ft_putchar_fd.o的src / ft_putendl.o的src / ft_putendl_fd.o的src / ft_putnbr.o的src / ft_putnbr_fd.o的src / ft_putstr.o的src / ft_putstr_fd.o的src / ft_strcat.o的src / ft_strchr.o的src / ft_strclr.o的src / ft_strcmp.o的src / ft_strcpy.o的src / ft_strdel.o的src / ft_strdup.o的src / ft_strequ.o的src / ft_striter.o的src / ft_striteri.o的src / ft_strjoin.o的src / ft_strlcat.o的src / ft_strlen.o的src / ft_strmap.o的src / ft_strmapi.o的src / ft_strncat.o的src / ft_strncmp.o的src / ft_strncpy.o的src / ft_strnequ.o的src / ft_strnew.o的src / ft_strnstr.o的src / ft_strrchr.o的src / ft_strrev.o的src / ft_strsplit.o的src / ft_strstr.o的src / ft_strsub.o的src / ft_strtrim.o的src / ft_tolower.o的src / ft_toupper.o的src / get_next_line.o
RM -f libft.a
RM -f libftprintf.a
室射频ft_printf_test.bin *
GCC -Wall -Wextra -Werror -I libft /包括/ -c ft_printf.c -o ft_printf.o
使-C libft
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_arrdel.c -o的src / ft_arrdel.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_atoi.c -o的src / ft_atoi.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_bzero.c -o的src / ft_bzero.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_isalnum.c -o的src / ft_isalnum.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_isalpha.c -o的src / ft_isalpha.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_isascii.c -o的src / ft_isascii.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_isdigit.c -o的src / ft_isdigit.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_islower.c -o的src / ft_islower.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_isprint.c -o的src / ft_isprint.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_isupper.c -o的src / ft_isupper.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_itoa.c -o的src / ft_itoa.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_lstadd.c -o的src / ft_lstadd.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_lstdel.c -o的src / ft_lstdel.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_lstdelone.c -o的src / ft_lstdelone.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_lstiter.c -o的src / ft_lstiter.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_lstmap.c -o的src / ft_lstmap.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_lstnew.c -o的src / ft_lstnew.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_lstpush.c -o的src / ft_lstpush.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_malloc.c -o的src / ft_malloc.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_memalloc.c -o的src / ft_memalloc.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_memccpy.c -o的src / ft_memccpy.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_memchr.c -o的src / ft_memchr.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_memcmp.c -o的src / ft_memcmp.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_memcpy.c -o的src / ft_memcpy.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_memdel.c -o的src / ft_memdel.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_memmove.c -o的src / ft_memmove.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_memset.c -o的src / ft_memset.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_putchar.c -o的src / ft_putchar.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_putchar_fd.c -o的src / ft_putchar_fd.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_putendl.c -o的src / ft_putendl.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_putendl_fd.c -o的src / ft_putendl_fd.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_putnbr.c -o的src / ft_putnbr.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_putnbr_fd.c -o的src / ft_putnbr_fd.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_putstr.c -o的src / ft_putstr.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_putstr_fd.c -o的src / ft_putstr_fd.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_strcat.c -o的src / ft_strcat.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_strchr.c -o的src / ft_strchr.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_strclr.c -o的src / ft_strclr.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_strcmp.c -o的src / ft_strcmp.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_strcpy.c -o的src / ft_strcpy.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_strdel.c -o的src / ft_strdel.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_strdup.c -o的src / ft_strdup.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_strequ.c -o的src / ft_strequ.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_striter.c -o的src / ft_striter.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_striteri.c -o的src / ft_striteri.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_strjoin.c -o的src / ft_strjoin.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_strlcat.c -o的src / ft_strlcat.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_strlen.c -o的src / ft_strlen.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_strmap.c -o的src / ft_strmap.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_strmapi.c -o的src / ft_strmapi.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_strncat.c -o的src / ft_strncat.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_strncmp.c -o的src / ft_strncmp.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_strncpy.c -o的src / ft_strncpy.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_strnequ.c -o的src / ft_strnequ.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_strnew.c -o的src / ft_strnew.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_strnstr.c -o的src / ft_strnstr.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_strrchr.c -o的src / ft_strrchr.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_strrev.c -o的src / ft_strrev.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_strsplit.c -o的src / ft_strsplit.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_strstr.c -o的src / ft_strstr.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_strsub.c -o的src / ft_strsub.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_strtrim.c -o的src / ft_strtrim.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_tolower.c -o的src / ft_tolower.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / ft_toupper.c -o的src / ft_toupper.o
GCC -g -Wall -Wextra -Werror -I包括-c的src / get_next_line.c -o的src / get_next_line.o
AR -rsv libft.a的src / ft_arrdel.o的src / ft_atoi.o的src / ft_bzero.o的src / ft_isalnum.o的src / ft_isalpha.o的src / ft_isascii.o的src / ft_isdigit.o的src / ft_islower.o的src / ft_isprint。 ØSRC / ft_isupper.o的src / ft_itoa.o的src / ft_lstadd.o的src / ft_lstdel.o的src / ft_lstdelone.o的src / ft_lstiter.o的src / ft_lstmap.o的src / ft_lstnew.o的src / ft_lstpush.o的src / ft_malloc。 ØSRC / ft_memalloc.o的src / ft_memccpy.o的src / ft_memchr.o的src / ft_memcmp.o的src / ft_memcpy.o的src / ft_memdel.o的src / ft_memmove.o的src / ft_memset.o的src / ft_putchar.o的src / ft_putchar_fd。 ØSRC / ft_putendl.o的src / ft_putendl_fd.o的src / ft_putnbr.o的src / ft_putnbr_fd.o的src / ft_putstr.o的src / ft_putstr_fd.o的src / ft_strcat.o的src / ft_strchr.o的src / ft_strclr.o的src / ft_strcmp。 ØSRC / ft_strcpy.o的src / ft_strdel.o的src / ft_strdup.o的src / ft_strequ.o的src / ft_striter.o的src / ft_striteri.o的src / ft_strjoin.o的src / ft_strlcat.o的src / ft_strlen.o的src / ft_strmap。 ØSRC / ft_strmapi.o的src / ft_strncat.o的src / ft_strncmp.o的src / ft_strncpy.o的src / ft_strnequ.o的src / ft_strnew.o的src / ft_strnstr.o的src / ft_strrchr.o的src / ft_strrev.o的src / ft_strsplit。 ØSRC / ft_strstr.o的src / ft_strsub.o的src / ft_strtrim.o的src / ft_tolower.o的src / ft_toupper.o的src / get_next_line.o
AR:创建归档libft.a
一个 - SRC / ft_arrdel.o
一个 - SRC / ft_atoi.o
一个 - SRC / ft_bzero.o
一个 - SRC / ft_isalnum.o
一个 - SRC / ft_isalpha.o
一个 - SRC / ft_isascii.o
一个 - SRC / ft_isdigit.o
一个 - SRC / ft_islower.o
一个 - SRC / ft_isprint.o
一个 - SRC / ft_isupper.o
一个 - SRC / ft_itoa.o
一个 - SRC / ft_lstadd.o
一个 - SRC / ft_lstdel.o
一个 - SRC / ft_lstdelone.o
一个 - SRC / ft_lstiter.o
一个 - SRC / ft_lstmap.o
一个 - SRC / ft_lstnew.o
一个 - SRC / ft_lstpush.o
一个 - SRC / ft_malloc.o
一个 - SRC / ft_memalloc.o
一个 - SRC / ft_memccpy.o
一个 - SRC / ft_memchr.o
一个 - SRC / ft_memcmp.o
一个 - SRC / ft_memcpy.o
一个 - SRC / ft_memdel.o
一个 - SRC / ft_memmove.o
一个 - SRC / ft_memset.o
一个 - SRC / ft_putchar.o
一个 - SRC / ft_putchar_fd.o
一个 - SRC / ft_putendl.o
一个 - SRC / ft_putendl_fd.o
一个 - SRC / ft_putnbr.o
一个 - SRC / ft_putnbr_fd.o
一个 - SRC / ft_putstr.o
一个 - SRC / ft_putstr_fd.o
一个 - SRC / ft_strcat.o
一个 - SRC / ft_strchr.o
一个 - SRC / ft_strclr.o
一个 - SRC / ft_strcmp.o
一个 - SRC / ft_strcpy.o
一个 - SRC / ft_strdel.o
一个 - SRC / ft_strdup.o
一个 - SRC / ft_strequ.o
一个 - SRC / ft_striter.o
一个 - SRC / ft_striteri.o
一个 - SRC / ft_strjoin.o
一个 - SRC / ft_strlcat.o
一个 - SRC / ft_strlen.o
一个 - SRC / ft_strmap.o
一个 - SRC / ft_strmapi.o
一个 - SRC / ft_strncat.o
一个 - SRC / ft_strncmp.o
一个 - SRC / ft_strncpy.o
一个 - SRC / ft_strnequ.o
一个 - SRC / ft_strnew.o
一个 - SRC / ft_strnstr.o
一个 - SRC / ft_strrchr.o
一个 - SRC / ft_strrev.o
一个 - SRC / ft_strsplit.o
一个 - SRC / ft_strstr.o
一个 - SRC / ft_strsub.o
一个 - SRC / ft_strtrim.o
一个 - SRC / ft_tolower.o
一个 - SRC / ft_toupper.o
一个 - SRC / get_next_line.o
AR -rsv libftprintf.a libft / libft.a ft_printf.o
AR:创建归档libftprintf.a
一个 - libft / libft.a
一个 - ft_printf.o
ranlib的libftprintf.a
$>做测试
GCC -Wall -Wextra -Werror -I libft /包括/ -L。 -lftprintf -o ft_printf_test.bin ft_printf_test.c
LD:警告:忽略文件./libftprintf.a,文件是专为存档而不是被连接的架构下(x86_64):./libftprintf.a
适用于建筑x86_64的未定义符号:
  _ft_printf_string,从引用:
      _test_printf_percent在ft_printf_test-jTXeph.o
  _ft_strcmp,从引用:
      _test_printf_percent在ft_printf_test-jTXeph.o
LD:符号(S)未找到x86_64的架构
铿锵:错误:连接命令,退出code 1(使用-v看看调用)失败
使:*** [测试]错误1
[ckleines〜/项目/ 2013-2014 / ALGO-1 / printf的] $>脂-info libft / libft.a
输入文件libft / libft.a不是fat文件
非FAT文件:libft / libft.a是架构:x86_64的
[ckleines〜/项目/ 2013-2014 / ALGO-1 / printf的] $>脂-info libftprintf.a
输入文件libftprintf.a不是fat文件
非FAT文件:libftprintf.a是架构:x86_64的
[ckleines〜/项目/ 2013-2014 / ALGO-1 / printf的] $>脂-info ft_printf.o
非FAT文件:ft_printf.o是架构:x86_64的


解决方案

我已经找到了一个稍微脏,但工作液现在。我提取的临时目录 libft / libft.a 存档。与提取的.o 文件链接的新库,然后删除临时目录。

  $(名称):$(OBJ)$(标题)
    使-C libft
    MKDIR libft_o&放大器;&安培; CD libft_o&放大器;&安培; AR -x ../libft/libft.a&放大器;&安培; CD ..
    $(AR)$(NAME)libft_o / *。Ø$(OBJ)
    室射频libft_o
    ranlib的$(NAME)

的缺点是,如果从libft对象文件在某些​​时候具有多个从printf的文件名称相同,它将覆盖的东西。但是,这不太可能发生。

I'm trying to code a printf clone. I've built a library file called "libftprintf.a" but when I try to use it, I get the following error, on Mac OSX 10.8.5:

ld: warning: ignoring file ./libftprintf.a, file was built for archive which is not the architecture being linked (x86_64): ./libftprintf.a

Strangely this works fine (but I need only one lib called libftprintf, so this is not acceptable):

gcc -Wall -Wextra -Werror -I libft/includes/ -o ft_printf_test.bin -L libft -lft -L. -lftprintf ft_printf_test.c

I suspect I have misused the ar command to link both libs together. But I don't se my mistake yet.

What could be the cause of that?

Everything seems to compile just fine until I try to use the libftprintf.a file with the make test command. I've searched for a solution on Google, but most answers relate to XCode only. According to lipo -info, the files are x86_64.

My GCC version:

$> gcc --version
Configured with: --prefix=/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
Target: x86_64-apple-darwin12.5.0
Thread model: posix

Below is the full output of my makefile, for reference.

$> make re
make -C libft clean
rm -f src/ft_arrdel.o src/ft_atoi.o src/ft_bzero.o src/ft_isalnum.o src/ft_isalpha.o src/ft_isascii.o src/ft_isdigit.o src/ft_islower.o src/ft_isprint.o src/ft_isupper.o src/ft_itoa.o src/ft_lstadd.o src/ft_lstdel.o src/ft_lstdelone.o src/ft_lstiter.o src/ft_lstmap.o src/ft_lstnew.o src/ft_lstpush.o src/ft_malloc.o src/ft_memalloc.o src/ft_memccpy.o src/ft_memchr.o src/ft_memcmp.o src/ft_memcpy.o src/ft_memdel.o src/ft_memmove.o src/ft_memset.o src/ft_putchar.o src/ft_putchar_fd.o src/ft_putendl.o src/ft_putendl_fd.o src/ft_putnbr.o src/ft_putnbr_fd.o src/ft_putstr.o src/ft_putstr_fd.o src/ft_strcat.o src/ft_strchr.o src/ft_strclr.o src/ft_strcmp.o src/ft_strcpy.o src/ft_strdel.o src/ft_strdup.o src/ft_strequ.o src/ft_striter.o src/ft_striteri.o src/ft_strjoin.o src/ft_strlcat.o src/ft_strlen.o src/ft_strmap.o src/ft_strmapi.o src/ft_strncat.o src/ft_strncmp.o src/ft_strncpy.o src/ft_strnequ.o src/ft_strnew.o src/ft_strnstr.o src/ft_strrchr.o src/ft_strrev.o src/ft_strsplit.o src/ft_strstr.o src/ft_strsub.o src/ft_strtrim.o src/ft_tolower.o src/ft_toupper.o src/get_next_line.o
rm -f ft_printf.o
make -C libft fclean
rm -f src/ft_arrdel.o src/ft_atoi.o src/ft_bzero.o src/ft_isalnum.o src/ft_isalpha.o src/ft_isascii.o src/ft_isdigit.o src/ft_islower.o src/ft_isprint.o src/ft_isupper.o src/ft_itoa.o src/ft_lstadd.o src/ft_lstdel.o src/ft_lstdelone.o src/ft_lstiter.o src/ft_lstmap.o src/ft_lstnew.o src/ft_lstpush.o src/ft_malloc.o src/ft_memalloc.o src/ft_memccpy.o src/ft_memchr.o src/ft_memcmp.o src/ft_memcpy.o src/ft_memdel.o src/ft_memmove.o src/ft_memset.o src/ft_putchar.o src/ft_putchar_fd.o src/ft_putendl.o src/ft_putendl_fd.o src/ft_putnbr.o src/ft_putnbr_fd.o src/ft_putstr.o src/ft_putstr_fd.o src/ft_strcat.o src/ft_strchr.o src/ft_strclr.o src/ft_strcmp.o src/ft_strcpy.o src/ft_strdel.o src/ft_strdup.o src/ft_strequ.o src/ft_striter.o src/ft_striteri.o src/ft_strjoin.o src/ft_strlcat.o src/ft_strlen.o src/ft_strmap.o src/ft_strmapi.o src/ft_strncat.o src/ft_strncmp.o src/ft_strncpy.o src/ft_strnequ.o src/ft_strnew.o src/ft_strnstr.o src/ft_strrchr.o src/ft_strrev.o src/ft_strsplit.o src/ft_strstr.o src/ft_strsub.o src/ft_strtrim.o src/ft_tolower.o src/ft_toupper.o src/get_next_line.o
rm -f libft.a
rm -f libftprintf.a
rm -Rf ft_printf_test.bin*
gcc -Wall -Wextra -Werror -I libft/includes/ -c ft_printf.c -o ft_printf.o
make -C libft
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_arrdel.c -o src/ft_arrdel.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_atoi.c -o src/ft_atoi.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_bzero.c -o src/ft_bzero.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_isalnum.c -o src/ft_isalnum.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_isalpha.c -o src/ft_isalpha.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_isascii.c -o src/ft_isascii.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_isdigit.c -o src/ft_isdigit.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_islower.c -o src/ft_islower.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_isprint.c -o src/ft_isprint.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_isupper.c -o src/ft_isupper.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_itoa.c -o src/ft_itoa.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_lstadd.c -o src/ft_lstadd.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_lstdel.c -o src/ft_lstdel.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_lstdelone.c -o src/ft_lstdelone.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_lstiter.c -o src/ft_lstiter.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_lstmap.c -o src/ft_lstmap.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_lstnew.c -o src/ft_lstnew.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_lstpush.c -o src/ft_lstpush.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_malloc.c -o src/ft_malloc.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_memalloc.c -o src/ft_memalloc.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_memccpy.c -o src/ft_memccpy.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_memchr.c -o src/ft_memchr.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_memcmp.c -o src/ft_memcmp.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_memcpy.c -o src/ft_memcpy.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_memdel.c -o src/ft_memdel.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_memmove.c -o src/ft_memmove.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_memset.c -o src/ft_memset.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_putchar.c -o src/ft_putchar.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_putchar_fd.c -o src/ft_putchar_fd.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_putendl.c -o src/ft_putendl.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_putendl_fd.c -o src/ft_putendl_fd.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_putnbr.c -o src/ft_putnbr.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_putnbr_fd.c -o src/ft_putnbr_fd.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_putstr.c -o src/ft_putstr.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_putstr_fd.c -o src/ft_putstr_fd.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_strcat.c -o src/ft_strcat.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_strchr.c -o src/ft_strchr.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_strclr.c -o src/ft_strclr.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_strcmp.c -o src/ft_strcmp.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_strcpy.c -o src/ft_strcpy.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_strdel.c -o src/ft_strdel.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_strdup.c -o src/ft_strdup.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_strequ.c -o src/ft_strequ.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_striter.c -o src/ft_striter.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_striteri.c -o src/ft_striteri.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_strjoin.c -o src/ft_strjoin.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_strlcat.c -o src/ft_strlcat.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_strlen.c -o src/ft_strlen.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_strmap.c -o src/ft_strmap.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_strmapi.c -o src/ft_strmapi.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_strncat.c -o src/ft_strncat.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_strncmp.c -o src/ft_strncmp.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_strncpy.c -o src/ft_strncpy.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_strnequ.c -o src/ft_strnequ.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_strnew.c -o src/ft_strnew.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_strnstr.c -o src/ft_strnstr.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_strrchr.c -o src/ft_strrchr.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_strrev.c -o src/ft_strrev.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_strsplit.c -o src/ft_strsplit.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_strstr.c -o src/ft_strstr.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_strsub.c -o src/ft_strsub.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_strtrim.c -o src/ft_strtrim.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_tolower.c -o src/ft_tolower.o
gcc -g -Wall -Wextra -Werror -I includes -c src/ft_toupper.c -o src/ft_toupper.o
gcc -g -Wall -Wextra -Werror -I includes -c src/get_next_line.c -o src/get_next_line.o
ar -rsv libft.a src/ft_arrdel.o src/ft_atoi.o src/ft_bzero.o src/ft_isalnum.o src/ft_isalpha.o src/ft_isascii.o src/ft_isdigit.o src/ft_islower.o src/ft_isprint.o src/ft_isupper.o src/ft_itoa.o src/ft_lstadd.o src/ft_lstdel.o src/ft_lstdelone.o src/ft_lstiter.o src/ft_lstmap.o src/ft_lstnew.o src/ft_lstpush.o src/ft_malloc.o src/ft_memalloc.o src/ft_memccpy.o src/ft_memchr.o src/ft_memcmp.o src/ft_memcpy.o src/ft_memdel.o src/ft_memmove.o src/ft_memset.o src/ft_putchar.o src/ft_putchar_fd.o src/ft_putendl.o src/ft_putendl_fd.o src/ft_putnbr.o src/ft_putnbr_fd.o src/ft_putstr.o src/ft_putstr_fd.o src/ft_strcat.o src/ft_strchr.o src/ft_strclr.o src/ft_strcmp.o src/ft_strcpy.o src/ft_strdel.o src/ft_strdup.o src/ft_strequ.o src/ft_striter.o src/ft_striteri.o src/ft_strjoin.o src/ft_strlcat.o src/ft_strlen.o src/ft_strmap.o src/ft_strmapi.o src/ft_strncat.o src/ft_strncmp.o src/ft_strncpy.o src/ft_strnequ.o src/ft_strnew.o src/ft_strnstr.o src/ft_strrchr.o src/ft_strrev.o src/ft_strsplit.o src/ft_strstr.o src/ft_strsub.o src/ft_strtrim.o src/ft_tolower.o src/ft_toupper.o src/get_next_line.o
ar: creating archive libft.a
a - src/ft_arrdel.o
a - src/ft_atoi.o
a - src/ft_bzero.o
a - src/ft_isalnum.o
a - src/ft_isalpha.o
a - src/ft_isascii.o
a - src/ft_isdigit.o
a - src/ft_islower.o
a - src/ft_isprint.o
a - src/ft_isupper.o
a - src/ft_itoa.o
a - src/ft_lstadd.o
a - src/ft_lstdel.o
a - src/ft_lstdelone.o
a - src/ft_lstiter.o
a - src/ft_lstmap.o
a - src/ft_lstnew.o
a - src/ft_lstpush.o
a - src/ft_malloc.o
a - src/ft_memalloc.o
a - src/ft_memccpy.o
a - src/ft_memchr.o
a - src/ft_memcmp.o
a - src/ft_memcpy.o
a - src/ft_memdel.o
a - src/ft_memmove.o
a - src/ft_memset.o
a - src/ft_putchar.o
a - src/ft_putchar_fd.o
a - src/ft_putendl.o
a - src/ft_putendl_fd.o
a - src/ft_putnbr.o
a - src/ft_putnbr_fd.o
a - src/ft_putstr.o
a - src/ft_putstr_fd.o
a - src/ft_strcat.o
a - src/ft_strchr.o
a - src/ft_strclr.o
a - src/ft_strcmp.o
a - src/ft_strcpy.o
a - src/ft_strdel.o
a - src/ft_strdup.o
a - src/ft_strequ.o
a - src/ft_striter.o
a - src/ft_striteri.o
a - src/ft_strjoin.o
a - src/ft_strlcat.o
a - src/ft_strlen.o
a - src/ft_strmap.o
a - src/ft_strmapi.o
a - src/ft_strncat.o
a - src/ft_strncmp.o
a - src/ft_strncpy.o
a - src/ft_strnequ.o
a - src/ft_strnew.o
a - src/ft_strnstr.o
a - src/ft_strrchr.o
a - src/ft_strrev.o
a - src/ft_strsplit.o
a - src/ft_strstr.o
a - src/ft_strsub.o
a - src/ft_strtrim.o
a - src/ft_tolower.o
a - src/ft_toupper.o
a - src/get_next_line.o
ar -rsv libftprintf.a libft/libft.a ft_printf.o
ar: creating archive libftprintf.a
a - libft/libft.a
a - ft_printf.o
ranlib libftprintf.a
$> make test
gcc -Wall -Wextra -Werror -I libft/includes/ -L. -lftprintf -o ft_printf_test.bin ft_printf_test.c
ld: warning: ignoring file ./libftprintf.a, file was built for archive which is not the architecture being linked (x86_64): ./libftprintf.a
Undefined symbols for architecture x86_64:
  "_ft_printf_string", referenced from:
      _test_printf_percent in ft_printf_test-jTXeph.o
  "_ft_strcmp", referenced from:
      _test_printf_percent in ft_printf_test-jTXeph.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: *** [test] Error 1
[ ckleines ~/Projects/2013-2014/Algo-1/printf ] $> lipo -info libft/libft.a
input file libft/libft.a is not a fat file
Non-fat file: libft/libft.a is architecture: x86_64
[ ckleines ~/Projects/2013-2014/Algo-1/printf ] $> lipo -info libftprintf.a
input file libftprintf.a is not a fat file
Non-fat file: libftprintf.a is architecture: x86_64
[ ckleines ~/Projects/2013-2014/Algo-1/printf ] $> lipo -info ft_printf.o
Non-fat file: ft_printf.o is architecture: x86_64

解决方案

I've found a slightly dirty but working solution for now. I extract the libft/libft.a archive in a temporary directory. Link the new library with the extracted .o files and then remove the temporary directory.

$(NAME): $(OBJ) $(HEADER)
    make -C libft
    mkdir libft_o && cd libft_o && ar -x ../libft/libft.a && cd ..
    $(AR) $(NAME) libft_o/*.o $(OBJ)
    rm -Rf libft_o
    ranlib $(NAME)

The drawback being that if an object file from libft at some point has the same name than one from the printf files, it will overwrite things. But that's not likely to happen.

这篇关于忽略文件lib.a,文件是专为存档而不是被连接的架构下(x86_64)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆