【发布时间】:2014-02-10 22:29:24
【问题描述】:
我制作了一个 C 程序,它使用 libsndfile 从音频文件中提取一些数据。
有哪些方法可以使程序尽可能便携,最好在安装时不需要 root 访问权限?
Libsndfile 在目标机器上不可用,所以我需要以某种方式将它与我的程序打包在一起。有没有办法静态链接库?我也看过一些 Autotools 教程,但我不知道如何继续。
我可以在我的开发机器上顺利编译,我使用包管理器安装了库:apt-get install libsnfile1-dev
makefile 很简单:
CFLAGS=-std=c99 -Wall -pedantic -g
CLIBS= -lsndfile -lm
BIN=audiodecode
CC=gcc
MAIN=main.o
FILES=
OBJS=$(FILES) $(MAIN)
.PHONY: all
all: clean $(OBJS)
$(CC) $(CFLAGS) -o $(BIN) $(OBJS) $(CLIBS)
.PHONY: clean
clean:
rm -f *.o $(BIN)
【问题讨论】:
-
你没有说——我猜你在Linux上?无论如何,我认为相关下方的答案就是您要寻找的...例如stackoverflow.com/questions/16027854/… 或stackoverflow.com/questions/3181154/…
-
简而言之,如果您不想分发共享库,那么您在共享库之外使用的任何函数调用都必须在本地(即在您的可执行文件中)创建和定义。