如何编译静态库

pyt*_*nic 4 c linux gcc x86-64

我正在尝试编译静态库.我按照在回答这个问题时给出的步骤,但它不起作用.以下是我的makefile.

PROJECT = lq.a
OBJECTS = dlmalloc.o queue.o.o
CFLAGS  = -o -Wall -pedantic

all: $(PROJECT)

.c.o:
    gcc -c $(CFLAGS) $<

$(PROJECT): $(OBJECTS)
    libtool -o  $(PROJECT) -static $(OBJECTS)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误.

libtool: unrecognized option `-o'
Run Code Online (Sandbox Code Playgroud)

编写这个makefile的正确方法是什么?

Tim*_*nes 8

您可以使用以下语法使用该程序ar 创建静态库:

 ar rcs my_library.a file1.o file2.o
Run Code Online (Sandbox Code Playgroud)

所以,在你的情况下:

$(PROJECT): $(OBJECTS)
     ar rcs $(PROJECT) $(OBJECTS)
Run Code Online (Sandbox Code Playgroud)

您可以在手册页上找到有关选项的说明,但基本上:

  • r 说将给定的目标文件插入到存档中(替换同一事物的任何旧版本)
  • c 如果它已经存在,则创建存档(通常无论如何都会发生,但此选项会禁止警告).
  • s 说将对象文件索引写入存档.