天道酬勤,学无止境

Install arbitrary data files in fixed location with Automake?

How can I tell automake to install arbitrary data files in places I want?

I have some files I need to put in specific places, e.g. "datafile1", in my project, needs to be copied to "/usr/MyProduct/flash_memory".

  • "/usr/MyProduct/flash_memory" is an absolute path that I can't change.
  • "datafile1" is a binary data file that is not "built" by make, but just needs to be copied by make install.
  • I can't bear on make dist. It needs to be copied by make install (its a long explanation, so, pelase just take this into account).
  • I rather not use install-hook, but prefer to have a more elegant approach (if possible).

Really thanks!

评论

Do not use full paths in your Makefile.am. Ever. You can tell automake to put the datafile1 in $(datadir) which will expand to $(prefix)/share/MyProduct, or you can define flash_DIR to expand to $(prefix)/MyProduct/flash_memory and put the files there, but the end user must be allowed to set $(prefix) either to /usr or to something else. What you want to do in Makefile.am is:

flashdir = $(prefix)/$(PACKAGE)/flash_memory
flash_DATA = datafile1

(It would probably be more appropriate to use $(prefix)/@PACKAGE@/flash_memory, since PACKAGE probably should not be modifiable at make time, but I don't think this is terribly important.)

Then, when you are a user, run make install with prefix set to /usr. If you try to use an absolute path in the Makefile.am, it will disallow staged installations (ie setting DESTDIR), will restrict user flexibility, and is the wrong thing to do. The main point is that the package maintainer does not get to choose the final location; that is a decision for the user.

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 红宝石2.0 Rails gem安装错误“无法加载此类文件— openssl”(ruby 2.0 rails gem install error “cannot load such file — openssl”)
    问题 我正在使用osx 10.8.2安装的ruby 2.0和...。尝试运行“ sudo gem install rails”时得到了此提示 $ sudo gem install rails ERROR: Loading command: install (LoadError) cannot load such file -- openssl ERROR: While executing gem ... (NoMethodError) undefined method `invoke_with_build_args' for nil:NilClass 我之前使用过ruby 1.9.x和rails 3.2.x 回答1 您必须先安装OpenSSL并再次重新编译ruby: RVM: rvm pkg install openssl rvm reinstall ruby-2.0.0-p0 --with-gcc=gcc-4.7 --with-openssl-dir=$rvm_path/usr 回答2 如果您使用的是RVM,请按照以下步骤操作: $ brew install automake $ rvm pkg install openssl $ rvm requirements run $ rvm reinstall all --force $ gem install rails 它为我工作。
  • 使用Autotools自动生成Makefile的步骤
    开发者们为了方便开发,开发了GNU自动构建工具(GUN Autotools)。Autotools核心包括Autoconf和Automake。所谓Autotools, 并不是自动完成整个配置编译过程,而是自动构建配置脚本configure和Makefile。 (1) Autoconf Autoconf的准确含义是自动创建自动配置脚本(automatically create automatic configuration scripts)。就是自动探测各种不同系统 的各种特性,如是本地编译还是交叉编译,使用的编译器、链接器等程序是什么,编译以及链接程序时需要的头文件、动态库以及它们所 在的路径,等等。 具体工作过程:讲多个shell片段最终合并为一个完整的shell脚本,即configure。Autoconf使用宏定义这些shell片段,开发者需要根 据编译需要,使用这些宏组合Autoconf的源文件configure.ac。然后Autoconf讲源文件configure.ac中的宏展开为具体的配置脚本configure。 Autoconf程序本身使用shell脚本编写,但是Autoconf并没有使用shell完成宏展开功能,而是借助了GNU的M4来完成宏的展开。M4的输 入是宏名,输出是shell脚本片段。Autoconf使用M4定义了一些内置宏,也基于M4封装了一部分宏,且一般以
  • libtool介绍
    文章目录 前言libtool介绍libtool使用库的构建include目录库的构建顶层configure.ac和Makefile.am的修改在源码中使用动态库 编译运行编译运行分析编译过程 前言 来源一:AUTOTOOLS - John Calcote or AUTOTOOLS – 亚马逊 来源二:使用 GNU Libtool 创建库 【这是一篇很好的blog】 简单整理下这本书的第六章:building libraries with libtool 简单整理下这本书的第七章:library interface versioning and runtime dynamic linking 书上该章花了很多笔墨来介绍动态库的原理。我知晓一点点这些原理。如果希望了解这些原理,我可能会通过ELF/PE的结构来了解动态库。该章的动态库原理介绍,翻翻就好。 另外,我没有体会到动态装载显示调用动态库的好处,书上动态装载部分代码能运行。运行时加载动态库相关内容,翻翻就好[ltdl & dl]。 这里是一篇以前的blog:头文件与库的关系 本章代码见:jupiter-libtool-ch6-01 | jupiter-libtool-ch7-01 # 大概的代码结构 ➜ jupiter-libtool-ch6-01 git:(master) ✗ tree . ├── common │ ├─”
  • 错误:使用了Libtool库,但未定义“ LIBTOOL”(error: Libtool library used but 'LIBTOOL' is undefined)
    问题 我想automake的OrientDb C ++库,但得到了一些错误。 Makefile.am:10: error: Libtool library used but 'LIBTOOL' is undefined Makefile.am:10: The usual way to define 'LIBTOOL' is to add 'LT_INIT' Makefile.am:10: to 'configure.ac' and run 'aclocal' and 'autoconf' again. Makefile.am:10: If 'LT_INIT' is in 'configure.ac', make sure Makefile.am:10: its definition is in aclocal's search path. https://github.com/tglman/orientdb-c https://github.com/tglman/orientdb-c/wiki/安装 我已经定义了configure.ac和Makefile.am。 我运行以下自动工具 本地自动标题自动制作: libtool(GNU libtool)2.4.2 configure.ac # -*- Autoconf -*- # Process this file with
  • 配置:错误:C编译器无法创建可执行文件(configure: error: C compiler cannot create executables)
    问题 我已经检查了许多关于stackoverflow的类似问题,但是还没有找到答案。 我正在尝试在Lion OSX上安装memcached,如下所示。 这就是我得到的: j-court-demones-macbook-pro:libevent-1.4.12-stable jcourtdemone$ ./configure; make checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... ./install-sh -c -d checking for gawk... no checking for mawk... no checking for nawk... no checking for awk... awk checking whether make sets $(MAKE)... yes checking for gcc... gcc checking for C compiler default output file name... configure: error: in `/tmp/libevent-1.4.12-stable
  • 安装php7.2-mcrypt的问题(Issue in installing php7.2-mcrypt)
    问题 当我尝试从PHP 7.2.X版本加载mcrypt扩展模块时。 因此,我尝试使用与当前PHP版本兼容的PECL库,以进行安装并遵循以下链接:在安装过程中在PHP 7.2上安装mcrypt! 以下是在终端上执行某些命令后获得的结果。 root@YYY:/var/www/html/orocrm# apt install php-pear Reading package lists... Done Building dependency tree Reading state information... Done The following package was automatically installed and is no longer required: libllvm4.0 Use 'sudo apt autoremove' to remove it. The following NEW packages will be installed: php-pear 0 upgraded, 1 newly installed, 0 to remove and 14 not upgraded. Need to get 285 kB of archives. After this operation, 2,107 kB of additional disk space will
  • ClickHouse配置Nginx进行负载均衡
    由于上文所说的种种原因,ClickHouse为什么不往分布式表直接写数据https://blog.csdn.net/wenyichuan/article/details/114019734 所以采用Nginx做代理 安装依赖模块 yum -y install gcc gcc-c++ autoconf automake make yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel 下载解压Nginx cd /home wget http://nginx.org/download/nginx-1.18.0.tar.gz tar -xvf nginx-1.18.0.tar.gz cd nginx-1.18.0 编译安装 不带用户模式 ./configure --prefix=/home/nginx --with-http_stub_status_module \ --with-http_ssl_module --with-stream \ --with-http_gzip_static_module \ --with-http_sub_module 带用户模式 ./configure --user=www --group=www --prefix=/home/nginx \ --with-http
  • 搭建Nginx+FastDFS(集群)+Lua+GraphicsMagick搭建类似淘宝的图片服务器基于Linux Centos7
    我的博客同步:http://www.deepinblog.com/%e6%96%87%e4%bb%b6%e6%9c%8d%e5%8a%a1%e5%99%a8/142/ 系统环境:Linux Centos7(3台) 1. 安装编译环境 yum install git gcc gcc-c++ make automake vim wget libevent -y 2.安装ibfastcommon基础库 mkdir /root/fastdfs cd /root/fastdfs git clone https://github.com/happyfish100/libfastcommon.git --depth 1 cd libfastcommon/ ./make.sh && ./make.sh install 3.安装FastDFS cd /root/fastdfs wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz tar -zxvf V5.11.tar.gz cd fastdfs-5.11 ./make.sh && ./make.sh install #配置文件准备 cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf cp /etc/fdfs
  • 在Docker中部署Confluence和jira-software
    小生博客:http://xsboke.blog.51cto.com -------谢谢您的参考,如有疑问,欢迎交流 version: centos==7.2 jdk==1.8 confluence==6.15.4 jira-software==8.2.1 docker==18.09 安装前提示: 1. 需要准备2个数据库,因为confluence和jira-software的mysql配置要求不一样 2. confluence需要配置jdk,jira-software自带jdk 选择使用docker部署的原因: 1. confluence和jira-software环境需求不同,需要分开配置. 2. 如果直接使用物理机,需要占用多台. 3. 不使用虚拟机是因为docker更轻量,而且更容易迁移. 4. confluence和jira-software只是作为公司内部员工使用,不需要太高的配置和复杂的环境 此次部署流程: 1. 配置jira-software需要的数据库 2. 配置jira-software 3. 配置confluence需要的数据库 4. 配置confluence 容器名称和IP分布: 因为wiki的账号可以由jira控制,所以我们首先安装jira-software 宿主机IP:10.0.0.25 1. jira-software jira-mysql 192
  • Web中间件常见漏洞总结
    *本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担。 *本文作者:ningjing,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。 一、 常见web中间件及其漏洞概述 (一) IIS 1、PUT漏洞 2、短文件名猜解 3、远程代码执行 4、解析漏洞 (二) Apache 1、解析漏洞 2、目录遍历 (三) Nginx 1、文件解析 2、目录遍历 3、CRLF注入 4、目录穿越 (四)Tomcat 1、远程代码执行 2、war后门文件部署 (五)jBoss 1、反序列化漏洞 2、war后门文件部署 (六)WebLogic 1、反序列化漏洞 2、SSRF 3、任意文件上传 4、war后门文件部署 (七)其它中间件相关漏洞 1、FastCGI未授权访问、任意命令执行 2、PHPCGI远程代码执行 二、 IIS漏洞分析 (一) IIS简介 IIS是Internet Information Services的缩写,意为互联网信息服务,是由微软公司提供的基于运行Microsoft Windows的互联网基本服务。最初是Windows NT版本的可选包,随后内置在Windows 2000、Windows XP Professional和Windows Server 2003一起发行,但在Windows XP
  • MySQL工具之binlog2sql闪回操作
    MySQL工具之binlog2sql闪回操作工具官网: https://github.com/danfengcao/binlog2sql 本文所有依赖包链接: https://share.weiyun.com/57HUxNi ---binlog2sql工具安装过程 1、安装系统依赖包 yum -y install gcc libffi-devel automake autoconf libtool make zlib* zlib-devel openssl-devel openssl* bzip2* 2、安装Python2.7 cp /soft/Python-2.7.16.tgz /usr/src/ cd /usr/src/ tar -zxvf Python-2.7.16.tgz cd /usr/src/Python-2.7.16 vi /usr/src/Python-2.7.16/Modules/Setup.dist 找到以下内容,去掉前边的注释: #SSL=/usr/local/ssl #_ssl _ssl.c \ # -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \ # -L$(SSL)/lib -lssl -lcrypto 和: #zlib zlibmodule.c -I$(prefix)/include -L$
  • MySQL恢复工具之binlog2sql闪回操作恢复误操作数据
    MySQL恢复工具之binlog2sql闪回操作恢复误操作数据 工具官网: https://github.com/danfengcao/binlog2sql本文所有依赖包链接: https://share.weiyun.com/57HUxNi ---binlog2sql工具安装过程:http://blog.itpub.net/26736162/viewspace-2651416/ 1、安装系统依赖包 yum -y install gcc libffi-devel automake autoconf libtool make zlib* zlib-devel openssl-devel openssl* bzip2* 2、安装Python2.7 cp /soft/Python-2.7.16.tgz /usr/src/ cd /usr/src/ tar -zxvf Python-2.7.16.tgz cd /usr/src/Python-2.7.16 vi /usr/src/Python-2.7.16/Modules/Setup.dist 找到以下内容,去掉前边的注释: #SSL=/usr/local/ssl #_ssl _ssl.c \ # -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \ # -L$(SSL)/lib
  • Confused about configure script and Makefile.in
    I'm currently learning how to use the autoconf/automake toolchain. I seem to have a general understanding of the workflow here - basically you have a configure.ac script which generates an executable configure file. The generated configure script is then executed by the end user to generate Makefiles, so the program can be built/installed. So the installation for a typical end-user is basically: ./configure make make install make clean Okay, now here's where I'm confused: As a developer, I've noticed that the auto-generated configure script sometimes won't run, and will error with: config
  • liunx下搭建fastdfs,并配置nginx访问
    liunx下搭建fastdfs,并配置nginx访问 准备安装fastdfs解压文件并安装安装c++环境安装libfastcommon安装FastDFS配置文件安装fastdfs-nginx-module 测试上传单机部署tracker配置storage配置client测试启动trackerd启动storaged 配置nginx映射准备环境配置 我的环境是centos 7.3 准备 准备安装包,这边我直接提供百度云下载 链接:https://pan.baidu.com/s/1nDmJOOMypbPtDISXX0CJBg 提取码:2nse libfastcommon-1.0.43.tar fastdfs-6.06.tar.gz fastdfs-nginx-module-1.22.tar nginx-1.8.0.tar 将除nginx的压缩文件全部传到 /myfile/fastdfs里面 没有这个文件夹可以自行创建 安装fastdfs 解压文件并安装 cd /myfile/fastdfs tar -zxvf libfastcommon-1.0.43.tar.gz tar -zxvf fastdfs-6.06.tar.gz tar -zxvf fastdfs-nginx-module-1.22.tar 安装c++环境 yum install git gcc gcc-c++ make
  • 在XAMPP上安装php-intl(Php-intl installation on XAMPP)
    问题 我需要在XAMPP的Mac上使用扩展名intl。 因此,我遵循了以下链接: XAMPP for Mac Lion 10.8上的php-intl安装 http://lvarayut.blogspot.it/2013/09/installing-intl-extension-in-xampp.html 我总是重新启动我的apache服务器,但未安装该扩展程序。 因为如果我启动: php -m | grep intl #should return 'intl' 返回空 没有它,我无法启动的命令是针对composer和cakephp的,如下所示: composer create-project --prefer-dist -s dev cakephp/app cakephp3 向我返回此错误: Installing dependencies (including require-dev) Your requirements could not be resolved to an installable set of packages. Problem 1 - Installation request for cakephp/cakephp 3.0.*-dev -> satisfiable by cakephp/cakephp[3.0.x-dev]. - cakephp/cakephp
  • 今日课题——Nginx入门教学
    NGINX联合创始人安德鲁·阿列克谢夫(Andrew Alexeev)曾说:NGINX是为对Apache性能不满意的人而构建的。随着Internet需求的变化,Web服务器的工作也在变化。NGINX的构建比以往任何时候都更有效率,更可扩展,更安全,更强大。 本文提供了Nginx的基本概念及知识。以开发者必备的Nginx基础知识为主,罗列了一些Nginx教程,希望对大家有所帮助。 一.环境 服务器版本:CentOS 7.2 为了保证学习阶段不遇到奇怪的事情,请保证以下四点 确认系统网络确认yum可用确认关闭iptables确认停用selinux #查看iptables状态 systemctl status firewalld.service #关闭防火墙(临时关闭) systemctl stop firewalld.service #查看SELinux状态 getenforce#临时关闭SELinux setenforce 0 安装一些系统基本工具,正常情况系统都会自带 yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automake yum -y install wget httpd-tools vim 二.基本概念 2.1Nginx是什么? Nginx是一个高性能的http和反向代理服务器,其特点是占用内存小
  • 优胜美地和瓦尔格朗德(Yosemite and Valgrind)
    问题 您能告诉我如何在优胜美地上安装valgrind吗? 当我尝试安装它时,我得到“检查内核版本...不支持(14.0.0)的配置:错误:Valgrind在Darwin 10.x,11.x,12.x和13.x(Mac OS X)上运行10.6 / 7/8/9)“ 没有正式的路径或更新,而且我什么也没找到(除了http://comments.gmane.org/gmane.comp.kde.devel.bugs/1553705,但他们没有解决该问题)。 回答1 由于没有支持Yosemite的稳定版本,因此您可以通过以下方式安装最新的开发版本: brew install --HEAD valgrind 回答2 尽管在过去的OS X发行周期中,Valgrind可能需要一段时间才能获得合理的功能支持,但由于在预发行的Yosemite上进行了大量工作,Valgrind主干中已经提供了基本的OS X 10.10支持。 从邮件列表: 最近已经进行了一些努力来改善Valgrind对优胜美地的支持。 如果您在Mac OS上进行开发,则可能要尝试使用主干(svn co svn://svn.valgrind.org/valgrind/trunk)并报告您遇到的任何损坏。 对优胜美地的支持足够好,至少一个大型图形应用程序(Firefox)可以正常运行。 对以前版本10.9(Mavericks
  • 例解 autoconf 和 automake 生成 Makefile 文件
    文档选项 打印本页 将此页作为电子邮件发送 样例代码 级别: 初级 杨 小华 ([email]normalnotebook@126.com[/email]), Linux 内核研究员苏 春艳, 在读研究生 2006 年 9 月 21 日 本文介绍了在 linux 系统中,通过 Gnu autoconf 和 automake 生成 Makefile 的方法。主要探讨了生成 Makefile 的来龙去脉及其机理,接着详细介绍了配置 Configure.in 的方法及其规则。 引子 无论是在Linux还是在Unix环境中,make都是一个非常重要的编译命令。不管是自己进行项目开发还是安装应用软件,我们都经常要用到make或 make install。利用make工具,我们可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make和 makefile工具就可以轻而易举的理顺各个源文件之间纷繁复杂的相互关系。 但是如果通过查阅make的帮助文档来手工编写Makefile,对任何程序员都是一场挑战。幸而有GNU 提供的Autoconf及Automake这两套工具使得编写makefile不再是一个难题。 本文将介绍如何利用 GNU Autoconf 及 Automake 这两套工具来协助我们自动产生 Makefile文件
  • 如何创建配置脚本?(How do I create a configure script?)
    问题 这听起来像是一个非常笼统的问题,但这是正确的。 我需要为我的应用程序创建配置脚本,此配置的结果将是生成的makefile (基本configure , make , make install )。 我的问题是,我应该从哪里开始构建? 有没有我可以效仿的例子? 回答1 要创建标准的“配置”脚本,您需要GNU autoconf。 您可能还需要GNU automake和libtool。 有大量的文档和指导。 谷歌搜索“ autoconf automake howto”之类的东西。 好的文档在官方手册页中: 自动配置:http://www.gnu.org/software/autoconf/ 自动制作:http://www.gnu.org/software/automake/automake.html Libtool :http: //www.gnu.org/software/libtool/libtool.html Autoconf将从“ configure.ac”文件开始创建您的配置脚本。 “ Makefile.am”文件将指导自动制作如何通过配置字符串创建您的制作文件。 需要Libtool来简化围绕代码的库处理。 您可以开始手动创建configure.ac文件,也可以使用“自动扫描”帮助程序来帮助您创建半自动的文件。 然后,当您准备就绪时,此功能便会发挥作用:
  • 如何在不授予RVM用户sudo访问权限的情况下安装RVM系统要求(How to install RVM system requirements without giving sudo access for RVM user)
    问题 在我的Debian服务器上,我有一个名为“ deployer”的用户,该用户没有sudo访问权限,并且已安装RVM。 当使用1.9.3之类的“ deployer”安装Ruby时,它会触发一个任务来安装依赖项 "Installing requirements for debian, might require sudo password." 失败并停止安装,因为“ deployer”无法安装sudo。 我不想在sudoers列表中添加“部署程序”,也不想为其他用户一次安装RVM来安装依赖项。 安装该依赖项的正确方法是什么? 或如何列出它们以手动安装? 回答1 这确实是RVM的一项新功能,称为autolibs ,它会自动安装依赖项。 如果您已经安装了RVM,并且正在询问您的sudo密码,则可以禁用自动库: $ rvm autolibs disable $ rvm requirements # manually install these $ rvm install ruby 否则,您可以使用以下命令在没有自动库的情况下安装RVM: $ \curl -L https://get.rvm.io | bash -s -- --autolibs=read-fail 我了解动机,但觉得很烦。 我不想将我的sudo密码放入RVM,也不想捆绑! 请社区,不要再这样做了。 回答2 我喜欢这个 $