我制作了一个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)
答案 0 :(得分:0)
许多软件包捆绑了它们的依赖项。示例:rsync(包含捆绑的libpopt),gnupg(包含捆绑的libz)。通常捆绑的其他依赖项是gettext或glib。 如需灵感,请了解这些受欢迎的开源项目是如何实现的。
将http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.25.tar.gz的内容放入子目录中,并添加适当的规则以首先构建子目录。
未经测试的示例代码: OBJS + = libsndfile / libsndfile.a
libsndfile/libsndfile.a:
cd libsdndfile && ./configure --enable-static && $(MAKE)
对于奖励积分,添加一个配置脚本,检查系统是否已经安装了libsndfile并动态链接到它。