我修改configure后执行它,为什么会生成一个旧的configure
时间: 2024-03-08 21:51:01 浏览: 28
如果您在修改configure.ac文件后运行configure脚本,则可能会生成旧的configure文件。这是因为configure脚本实际上是由Autoconf工具生成的,它会根据configure.ac文件中的信息和系统的特定配置来生成新的configure文件。如果您修改了configure.ac文件,但没有重新生成新的configure文件,则使用旧的configure文件运行configure脚本会导致使用旧的配置信息生成Makefile和其他文件。
为了解决这个问题,您需要使用Autoconf工具重新生成configure文件。首先,在您的软件包的根目录中运行以下命令:
```
autoconf
```
这将使用Autoconf工具生成新的configure文件,以反映您对configure.ac文件所做的更改。然后,您可以使用新的configure文件重新运行configure脚本,以确保生成的Makefile和其他文件使用最新的配置信息。
请注意,在重新生成configure文件后,您可能需要重新运行其他Autoconf工具,例如aclocal和automake,以确保所有相关文件都已更新。
相关问题
可是重新生成的configure文件里面丢失了我的配置
执行 `aclocal`、`autoconf` 和 `automake --add-missing` 等命令会重新生成 `configure` 脚本和 Makefile.in 文件等自动化工具需要的文件,但是这些命令不会修改你之前传递给 `configure` 脚本的选项和参数配置。
如果你想要保留之前的配置,可以在重新执行 `configure` 脚本时,使用之前的配置选项参数进行编译,例如:
```
./configure --prefix=/usr/local/pcre-8.44 --enable-utf8 --enable-jit
make
make install
```
其中,`--prefix` 选项指定了安装目录,`--enable-utf8` 和 `--enable-jit` 选项分别启用了 UTF-8 编码和 JIT 功能。
这样做应该可以保留你之前的配置,同时重新生成的 `configure` 脚本和 Makefile.in 文件等自动化工具需要的文件也会生效。
那我CFLAGS可以写到.configure后吗
在 `configure` 脚本生成的 Makefile 中,通常会将 `CFLAGS` 变量的值设置为 `$(CPPFLAGS) $(CFLAGS)`,也就是说,如果你在运行 `configure` 脚本时设置了 `CFLAGS` 环境变量,那么这些选项会被传递到 Makefile 中。
因此,你可以在运行 `configure` 脚本时设置 `CFLAGS` 环境变量,来指定编译器选项,例如:
```
CFLAGS="-Wall -O2 -I/path/to/include" ./configure --prefix=/usr/local
```
这样,在编译程序时就会使用 `-Wall`、`-O2` 和 `-I/path/to/include` 这些选项。注意,这种方式设置的选项会被应用到所有的源文件中,包括库文件和可执行文件。
另外,如果你使用的是 Autoconf 工具链,那么可以在 `configure.ac` 文件中使用 `AC_SUBST` 宏将 `CFLAGS` 变量传递到 Makefile 中,例如:
```autoconf
AC_SUBST([CFLAGS], ["-Wall -O2 -I/path/to/include"])
```
这样,在生成的 Makefile 中会包含一个名为 `CFLAGS` 的变量,其值为 `-Wall -O2 -I/path/to/include`。这个变量可以在 Makefile 中使用,例如:
```makefile
CC = gcc
CFLAGS += $(MY_CFLAGS) $(DEBUG_FLAGS)
LDFLAGS += $(MY_LDFLAGS)
LDLIBS += $(MY_LIBS)
all: my_program
my_program: main.o libmylib.a
$(CC) $(LDFLAGS) -o $@ $< -L. -lmylib $(LDLIBS)
libmylib.a: mylib.o
ar rcs $@ $<
main.o: main.c mylib.h
$(CC) $(CFLAGS) -c -o $@ $<
mylib.o: mylib.c mylib.h
$(CC) $(CFLAGS) -c -o $@ $<
clean:
rm -f *.o *.a my_program
```
在这个示例中,我们使用 `CFLAGS` 变量来指定编译器选项,这个变量的值包含了 `-Wall -O2 -I/path/to/include` 以及其他一些选项。在编译命令中,我们使用了 `$(CFLAGS)` 变量来传递编译器选项。这样,如果你想修改编译器选项,只需要修改 `configure.ac` 文件中的 `AC_SUBST` 宏即可,不需要手动修改 Makefile。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)