Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 构建共享库,用c+编写+;,在Mac/OS X上使用gnu自动工具? 我想把一个C++程序从Linux写入到MAC,包括共享库项目。我用gnu汽车制造公司来做制造工作。现在我有很多问题阻止我使用automake在mac上构建我的程序_Macos_Autotools_Automake - Fatal编程技术网

Macos 构建共享库,用c+编写+;,在Mac/OS X上使用gnu自动工具? 我想把一个C++程序从Linux写入到MAC,包括共享库项目。我用gnu汽车制造公司来做制造工作。现在我有很多问题阻止我使用automake在mac上构建我的程序

Macos 构建共享库,用c+编写+;,在Mac/OS X上使用gnu自动工具? 我想把一个C++程序从Linux写入到MAC,包括共享库项目。我用gnu汽车制造公司来做制造工作。现在我有很多问题阻止我使用automake在mac上构建我的程序,macos,autotools,automake,Macos,Autotools,Automake,我所做的努力: 安装了xcode 5.1.1及其命令行工具(看起来没有帮助,它没有automake) 通过自制程序手动安装automake libtool 遵循典型的自动生成工作流:autoscan、autoconf、aclocal、automake、configure、make。。。然后出现了一系列错误 在google heaps中搜索,没有找到关于此特定任务的完整教程 以下是我可以描述的一些问题: 第一件事是让共享库被构建。我在mac上发现libtool的名称是“glibtool”,所以我需

我所做的努力:

  • 安装了xcode 5.1.1及其命令行工具(看起来没有帮助,它没有automake)
  • 通过自制程序手动安装automake libtool
  • 遵循典型的自动生成工作流:autoscan、autoconf、aclocal、automake、configure、make。。。然后出现了一系列错误
  • 在google heaps中搜索,没有找到关于此特定任务的完整教程 以下是我可以描述的一些问题:

    第一件事是让共享库被构建。我在mac上发现libtool的名称是“glibtool”,所以我需要使用glibtool而不是libtool,我把它放在: LIBTOOL=glibtool 在Makefile.am中执行此操作。我还需要检查操作系统,让它只对达尔文系统这样做。以下内容应在shell中可用,但似乎不适用于Makefile.am:

    ifeq ($(OS), Windows_NT)
    else
        UNAME_S := $(shell uname -s)
        ifeq ($(UNAME_S), Darwin)
            LIBTOOL = glibtool
        endif
    endif
    
    这将导致“错误:没有if的else”。不知道如何实现这一点

    左边是生成的Makefile,它基本上不工作。键入“make”:

    cd./.&&/bin/sh/Users/viewpl/lab/rdwtwdb git-code/rdwtwdb/missing automake-1.14--gnu-plugin/dictcn/Makefile source='../../rwd_util.cpp'对象='../../rwd_util.lo'libtool=yes\ DEPDIR=.deps depmode=none/bin/sh.././depcomp\ glibtool--tag=CXX--mode=compile g++-DHAVE_-CONFIG_-H-I/usr/include/-I/usr/libxml2/-I/usr/local/opt/libxml2/include/libxml2/-I/usr/local/opt/readline/include-I/usr/local/include/-ikote../-include/-g-O2-c-o../.rwd\u util.lo../.rwd\u util.cpp glibtool--tag=CXX--mode=link g++-g-O2-rpath/usr/local/bin/plugin/-o libdictcn.la-rpath/usr/local/lib/rwd dictcn.lo.././rwd_util.lo-liconv-lltdl-lz-lxml2-lreadline-lpthread-lportaudio-ldl-lcurl glibtool:link:`.././rwd_util.lo'不是有效的libtool对象

    缺少.lo文件,看起来无法将.cpp编译为.lo。我试图通过手动运行g++语句来解决这个问题,它可以帮助生成.lo。 我最后犯了这个错误:

    LWIB/LIBDICN.0.LIBS/DITCN.O./LIBS/RWDJUTIL.O-LIQOL-LZDL-LXML2-LRADLION-LP-线程-LPORTAUDIO-LDL -LCURL-O2-安装名/Ur/Prime/BI/PuxIn//Ur/Prim/LIB/RWD/LIBDICTCN.0.DYLIB-AdvulyIY版本1 - CurrutyX版本1 - Wl,

    GLUBoTo:Link:C++动态DIABICLB-单模块 clang:错误:没有这样的文件或目录:'/usr/local/lib/rwd/libdictcn.0.dylib'

    我花了很多时间在网上搜索,但帮不了什么忙。 对于解决mac上的gnu自动工具使用问题没有多大帮助

    完整的源代码可以通过以下方式找到:

    git clone http://git.code.sf.net/p/rdwtwdb/gitcode rdwtwdb-gitcode
    
    我正在使用OSXMavericksV10.9.2。谢谢你的建议


    添加更多信息以帮助询问我为什么无法生成
    。lo
    在库文件夹下键入
    make
    时,已使用glibtool生成Makefile

    在库文件夹下键入
    make
    时,它会抱怨
    。lo
    文件丢失:

    source='dictcn.cpp' object='dictcn.lo' libtool=yes \
        DEPDIR=.deps depmode=none /bin/sh ../../depcomp \
        /bin/sh ../../libtool  --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H    -I/usr/include/ -I/usr/include/libxml2/ -I/usr/local/opt/libxml2/include/libxml2/ -I/usr/local/opt/readline/include -I/usr/local/include/ -iquote../../include/ -iquote../../   -g -O2 -c -o dictcn.lo dictcn.cpp
    source='../../rwd_util.cpp' object='../../rwd_util.lo' libtool=yes \
        DEPDIR=.deps depmode=none /bin/sh ../../depcomp \
        /bin/sh ../../libtool  --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H    -I/usr/include/ -I/usr/include/libxml2/ -I/usr/local/opt/libxml2/include/libxml2/ -I/usr/local/opt/readline/include -I/usr/local/include/ -iquote../../include/ -iquote../../   -g -O2 -c -o ../../rwd_util.lo ../../rwd_util.cpp
    /bin/sh ../../libtool  --tag=CXX   --mode=link g++  -g -O2  -rpath /usr/local/bin/plugin/  -o libdictcn.la -rpath /usr/local/lib/rwd dictcn.lo ../../rwd_util.lo  -liconv -lltdl -lz -lxml2 -lreadline -lpthread -lportaudio -ldl -lcurl 
    libtool: link: `dictcn.lo' is not a valid libtool object
    make: *** [libdictcn.la] Error 1
    
    但是在输出中给出了构建
    .lo
    的方法。为什么它不使用它来构建
    .lo
    ? 我查看了Makefile本身,发现了构建
    的规则。lo
    是这样的:

    .cpp.lo:
        $(AM_V_CXX)source='$<' object='$@' libtool=yes \
        DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
        $(AM_V_CXX_no)$(LTCXXCOMPILE) -c -o $@ $<
    

    您的问题是,
    ifeq
    endif
    makefile语法由于缩进而无法在
    automake
    中工作。显示了在
    configure.ac
    中处理
    uname
    案例的更可靠方法

    我对自制啤酒不太熟悉。自制软件是否也像本机OS X GNU libtool一样调用
    libtool
    glibtool
    libtoolize

    无论如何,在
    Makefile.am
    中设置
    LIBTOOL
    已经太晚了。它需要由
    autoeconf
    处理,后者调用
    libtoolize
    ,写入
    libtool.m4
    (由
    configure
    编写的
    libtool
    模板)。如果是这样的话,这样的方法可能会奏效:

    LIBTOOLIZE=glibtoolize autoreconf -fvi 
    

    每当我必须使用GNU构建系统在OSX上构建时,我都会安装所有的自动工具。OS X自动工具总是很古老,在OS X上无法使用。自制的libtools软件包可能还可以,但我对它们没有任何经验,所以我真的不能肯定。

    我不知道这是否有帮助,但请尝试
    ifneq
    而不是
    ifeq
    ,后面紧跟着
    else
    ?谢谢您的回复。我用自制软件安装了新的自动工具。我不熟悉libtoolize/glibtoolize。无论如何,我尝试在configure.ac中添加'LIBTOOL=glibtool'和'LIBTOOLIZE=glibtoolize',看起来生成的Make仍然无法输出。lo'LIBTOOL:link:'dictcn.lo'不是有效的LIBTOOL对象'将
    LIBTOOLIZE
    LIBTOOL
    添加到
    configure.ac
    也无法修复它,因为它也太迟了。您可能想查看
    autoreconf
    的文档。我想我现在使用的是正确的libtool,因为我检查了项目根目录下生成的“libtool”文件,它是版本2.4.2,与
    $glibtool--version
    的结果相同。你知道为什么我的库中的Makefile为build.lo提供了正确的命令行,但在我键入
    make
    时没有运行build.lo吗?
    LIBTOOLIZE=glibtoolize autoreconf -fvi