I have issues building my project on C, and I have created minimal build to reproduce the issue. Project uses .a archive for linking, the error:
linker-test$ make
gcc -Wall -g -c -o main.o main.c
gcc -Wall -g -c -o ar-test1.o ar-test1.c
gcc -Wall -g -c -o ar-test2.o ar-test2.c
ar rcs libartest.a ar-test1.o ar-test2.o
gcc -Wall -g -o myapp main.o -L. -lartest
ld: archive member '/' not a mach-o file in '/Users/serg/temp/temp/linker-test/libartest.a'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [myapp] Error 1
Archive to try: https://file.io/OomLs7yTSAnz
Files:
Makefile
:
CC = gcc
CFLAGS = -Wall -g
# List of source files and object files
SRCS = main.c
OBJS = $(SRCS:.c=.o)
# Archive name
LIBRARY = libartest.a
all: myapp
myapp: $(OBJS) $(LIBRARY)
$(CC) $(CFLAGS) -o $@ $(OBJS) -L. -lartest
$(LIBRARY): ar-test1.o ar-test2.o
ar rcs $(LIBRARY) ar-test1.o ar-test2.o
%.o: %.c
$(CC) $(CFLAGS) -c -o $@ $<
clean:
rm -f myapp $(OBJS) $(LIBRARY) *.o
.PHONY: all clean
ar-test1.c
:
#include <stdio.h>
void ar_test1() {
printf("This is ar-test1.c\n");
}
ar-test2.c
:
#include <stdio.h>
void ar_test2() {
printf("This is ar-test2.c\n");
}
main.c
:
#include <stdio.h>
int main() {
printf("Hello, world!\n");
return 0;
}