当定义一个头靠宏,如_FILE_OFFSET_BITS,FUSE_USE_VERSION,_GNU_SOURCE等等,这里是把他们最好的地方?
我考虑过的一些可能性包括
CPPFLAGS通过编译器在级别定义?(例如-D_FILE_OFFSET_BITS=64)用于:
注意:适用于制作,自动工具和其他构建系统的合理性是我决定的一个因素.
我可以找到的所有Debian打包示例都假设用户从上游构建重新打包,因此它解压缩源tar包,配置,重建和重新打包.我正在尝试为自己的库构建一个包,它是使用autotools构建的.我尝试了几种不同的方法,我最近的尝试看起来像这样:
DH_PACKAGE_NAME=`echo $(PACKAGE_NAME) | sed s/_/-/g`
dist-hook:
    cd $(distdir) ; \
    export DEBFULLNAME="Some One" ; \
    export DEBEMAIL="someone@foo.com" ; \
    echo -e "\n" | dh_make --copyright blank --library --native \
        --packagename $(DH_PACKAGE_NAME)
    mv $(distdir)/debian $(distdir)/DEBIAN
    dpkg-deb --build $(distdir)
为此dpkg-deb抱怨dh_makes控制文件.我有一个问题,解决方案更简单了吗?
fcntl()使用struct flock结构来定义和检查文件锁.不幸的是,在不同的Unix系统上,这种结构中的字段顺序不同.有没有人知道如何使用autoconf检查它或至少检查结构是否采用特定格式(例如,问题是 - 结构格式是否与Linux格式匹配)?
我想在yocto中写一个配方来构建我的自定义组件.在那我想根据机器启用一些标志.
例如:
如果机器是x86
我的configure命令应该是这样的:
./configure --enable-x86
如果是x64
./configure --enable-x64
我正在使用汽车工具进行建设.请帮我写配方以及"configure.ac"来实现这一目标.
ps:我对yocto很新.
我想建立一个共享库.GNU/Linux是开发和目标平台.C是实现语言.
我无法决定如何设置构建系统并继续围绕三个选项,每个选项都有很多不喜欢的理由:
我无法决定去哪.我会选择一个,开始工作然后遇到问题,并决定其他系统更好.我卡住了卡住了.有人可以解释一下这可能有助于我解决这个问题吗?
在我的c/c ++文件中,有多个#define.举个例子:
#ifdef LIBVNCSERVER_HAVE_LIBZ
  /* some code */
#ifdef LIBVNCSERVER_HAVE_LIBJPEG
  /* some more code */
你能否告诉我如何修改我的Makefile.in以便在编译期间在所有文件中都有#define ?
谢谢.
我正在尝试为开源项目调试autotools问题,这在配置步骤失败了.我想看看配置的代码/可执行文件正在尝试运行.
但是,config.log只显示失败的东西(不是它试图编译的代码),我不知道临时可执行文件的存储位置(并且它们可能会被及时删除).
有没有办法让autotools保持其临时文件?在指定的级别无关紧要 - 无论是使用args进行配置,还是在生成configure时使用args到autoconf,或者甚至进行一些m4调用.
编辑当出现故障时,configure.log看起来像这样:
configure:3285: checking whether we are cross compiling
configure:3293: gcc -o conftest.exe -DU_STATIC_IMPLEMENTATION -O3   conftest.c  >&5
configure:3297: $? = 0
configure:3304: ./conftest
configure:3308: $? = 1
configure:3315: error: in `/home/bobthebuilder/Development/icu/build':
configure:3317: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details
我需要配置文件从C++转换为JS,我试图在项目中使用emscripten.Emscripte附带了一个名为emconfigure的工具,它取代了autoconf配置,
但我正在构建的项目使用cmake作为构建系统,目前(1月12日)emscripten只支持autoconf - 所以我通过生成configure并在make上做一个端口来绕过它,所以有一种方法可以创建来自cmake的配置文件?? 我不是在讨论make文件..而是配置文件本身.
我有一个项目可以基于一个定义生成两个不同的应用程序.
libfoo_la_CXXFLAGS = -DMYDEFINE
我必须修改Makefile.am来设置这个定义,所以它不是自动的.
我可以通过configure命令以某种方式设置此定义吗?有没有其他方法可以使用autotools设置一个定义?
首先,我想告诉你这是我在StackOverflow上的第一篇文章,所以我希望通过提出一个非常愚蠢的问题,我不会愚弄自己.我一直在谷歌上搜索这个问题几天了,到目前为止我找不到任何答案.
情况如下:
我正在研究用autotools管理的C++项目.目标平台是RHEL5 64bit,安装了两个版本的gcc:
当我使用默认的gcc版本(4.1.2)构建我的项目时,一切都很顺利,但是当我切换到gcc 4.3.5时,我在链接时遇到这个错误:
/local/opt/gcc-4.3.5/lib/../lib/libstdc++.so: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
似乎libtool硬编码了32位版本的libstdc ++的路径.所以在命令行中,它应该是64位版本.更确切地说,失败的libtool调用是:
/bin/sh ./libtool --tag=CXX --mode=link g++  -m64   -o libfoo.la -rpath /local/opt/foo/lib  src/foo/libfoo_la-bar1.lo src/foo/libfoo_la-bar2.lo
由libtool翻译为:
g++ -shared -nostdlib
/usr/lib/../lib64/crti.o
/local/opt/gcc-4.3.5/lib/gcc/x86_64-unknown-linux-gnu/4.3.5/crtbeginS.o
src/foo/.libs/libfoo_la-bar1.o
src/foo/.libs/libfoo_la-bar2.o
-Wl,--rpath
-Wl,/local/opt/gcc-4.3.5/lib/../lib
-Wl,--rpath
-Wl,/local/opt/gcc-4.3.5/lib/../lib
-L/local/opt/gcc-4.3.5/lib/gcc/x86_64-unknown-linux-gnu/4.3.5
-L/local/opt/gcc-4.3.5/lib/gcc/x86_64-unknown-linux-gnu/4.3.5/../../../../lib64
-L/lib/../lib64
-L/usr/lib/../lib64
-L/local/opt/gcc-4.3.5/lib/gcc/x86_64-unknown-linux-gnu/4.3.5/../../..
/local/opt/gcc-4.3.5/lib/../lib/libstdc++.so
-lm -lc -lgcc_s
/local/opt/gcc-4.3.5/lib/gcc/x86_64-unknown-linux-gnu/4.3.5/crtendS.o
/usr/lib/../lib64/crtn.o
-m64 -Wl,-soname -Wl,libfoo.so.0 -o .libs/libfoo.so.0.0.0
我应该准确地说,我用来从默认gcc切换到gcc 4.3.5的方法如下:
$ export PATH=/local/opt/gcc-4.3.5/bin:$PATH
$ export LD_LIBRARY_PATH=/local/opt/gcc-4.3.5/lib:/local/opt/gcc-4.3.5/lib64:$LD_LIBRARY_PATH
$ export GCC_HOME=/local/opt/gcc-4.3.5
我对所有这些工具都很陌生,所以我怀疑我做错了什么.如果有人能给我一个如何解决这个问题的线索,我将非常感激. …