编辑:我原本可能不清楚。如何将符号链接安装到两个已安装的可执行文件之一?
在“make install”中,我希望安装用户能够设置链接到静态链接的prog,“helloStatic”或动态链接的prog的符号链接“hello” “helloShared。”看到我的答案。
我目前构建和安装:
- HelloShared,这是我main.o链接到我的共享库libsay.la
- HelloStatic,这是我main.o链接到我的静态库libsay.a
我也想安装Hello,它可能是HelloShared或HelloStatic的符号链接。
我猜这个选择将通过提供一个选项来配置或制作?
我主要关注* nix或cygwin,但是如何在Windows安装中执行它也不错。
回顾一下,我想安装两个构建的可执行文件,另外还有一个可执行文件的符号链接,表示安装人员希望成为“普通”版本。理想情况下,如果没有选择,也是一个默认链接。
从一些源文件开始,我用autoscan创建了一个configure.ac,然后根据需要构建它。
我的工作流程是:
- autorconf -i
- 的./configure
- 使
化妆后我得到:
$ file hello*
helloShared: Bourne-Again shell script, ASCII text executable, with very long lines
helloStatic: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=f56d94fbc40359aced749759231d3e7ae39587a0, not stripped
我的文件:
$ tree -a
├── configure.ac
├── lib
│ ├── say.c
│ └── say.h
├── m4
├── Makefile.am
└── src
└── main.c
3 directories, 5 files
##########
$ cat configure.ac
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.69])
AC_INIT([Hello], [0.1])
AC_CONFIG_SRCDIR([lib/say.h])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_AUX_DIR([build-aux])
AM_INIT_AUTOMAKE([foreign subdir-objects -Wall -Werror])
AC_CONFIG_FILES([Makefile])
AC_CONFIG_MACRO_DIRS([m4])
# Checks for programs.
AC_PROG_CC
AM_PROG_AR
LT_INIT
# Checks for libraries.
# Checks for header files.
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_OUTPUT
##########
$ cat Makefile.am
ACLOCAL_AMFLAGS = -I m4
pkglib_LTLIBRARIES = libsay.la
libsay_la_SOURCES = \
lib/say.c
libsay_la_CFLAGS = -I lib
pkglib_LIBRARIES = libsay.a
libsay_a_SOURCES = \
lib/say.c
libsay_a_CFLAGS = -I lib
include_HEADERS = \
lib/say.h
bin_PROGRAMS = helloShared helloStatic
helloShared_SOURCES = \
src/main.c
helloShared_CFLAGS = -I lib
helloShared_LDADD = libsay.la
helloStatic_SOURCES = \
src/main.c
helloStatic_CFLAGS = -I lib
helloStatic_LDADD = libsay.a