automake 链接时如何指定不使用.la来链接
时间: 2024-10-04 13:01:39 浏览: 25
automake-1.13.4-3.el7.noarch.rpm
`automake`是一个自动化构建工具,用于生成适用于GNU Autoconf的Makefile,它通常配合`autoconf`一起使用,特别是在处理C/C++项目的构建流程。当你想要在链接阶段避免使用`.la`文件(也称为共享库对象文件)时,可以在Makefile.am中做如下的设置:
1. **手动指定**:如果你确切地知道自己不需要`.la`,可以在`bin_PROGRAMS`、`lib_LTLIBRARIES`或`subdir`等区块中直接指定目标文件名,而不是生成`.la`的规则。
```makefile
bin_PROGRAMS = my_program my_program_no_la
my_program_no_la : my_source.c
$(CC) -o $@ $< $(LDFLAGS)
```
2. **忽略生成**:如果你想让`automake`默认不生成`.la`文件,可以修改`AM_LDFLAGS`变量,添加`-no-common`选项。这会让`automake`假设所有的目标都是私有的,不会创建全局的静态库。
```makefile
AM_LDFLAGS = -no-common
```
3. **使用`libtool`的选项**:如果你仍然需要`.la`文件,但只想在某些特定情况下禁用,可以使用`libtool`的`--mode=link`选项。例如,在`configure.ac`或`Makefile.am`中,你可以这样设置:
```bash
ac_add_subdir(subdir)
LTDLTLIBS = -L/path/to/library -lmy_library
AC_SUBST(LTDLTLIBS)
```
然后在` subdir/Makefile.am`里:
```makefile
SUBDIRS = subdir
subdir_LDADD = $(LTDLTLIBS)
```
在`subdir`目录中,使用`--mode=none`来编译:
```sh
./configure --disable-shared --enable-static
make
```
阅读全文