首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当一切就绪时,libtool不会生成lo文件

问当一切就绪时,libtool不会生成lo文件
EN

Stack Overflow用户
提问于 2014-02-08 14:02:25
回答 3查看 9.6K关注 0票数 3

我刚开始使用libtool。然而,这个问题似乎很奇怪。一切都在那里,但libtool说" libtool : link:'cuda_transfer.lo‘不是一个有效的libtool对象“。但是,生成这个lo文件的规则就在Makefile中。此外,这两个头文件也在它们应该在的位置,并且可以正常工作。你知道哪里出了问题吗?

代码语言:javascript
复制
cuda_transfer.lo: particles_cuda.h ../../include/psc_particles_cuda.h

Makefile中出现cuda_transfer.lo的另外两个位置如下

代码语言:javascript
复制
libsubdir_la_DEPENDENCIES = cuda_transfer.lo \

libsubdir_la_LIBADD = \
    cuda_transfer.lo \

.c.lo:段如下:

代码语言:javascript
复制
.c.lo:
    $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
    $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
    $(am__mv) $$depbase.Tpo $$depbase.Plo
#   $(AM_V_CC)source='$<' object='$@' libtool=yes \
#   DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
#   $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $<

如何解释这个人类不友好的代码。==

下面是Brett建议的代码段。

代码语言:javascript
复制
noinst_LTLIBRARIES = libsubdir.la
libsubdir_la_SOURCES = \
        psc_fields_cuda.c \
        psc_particles_cuda.c \
        psc_push_particles_cuda.c \
        psc_push_fields_cuda.c \
        psc_bnd_cuda.c \
        psc_bnd_particles_cuda.c \
        psc_bnd_fields_cuda.c \
        b40c/kernel_utils.h \
        b40c/radixsort_kernel_common.h \
        b40c/radixsort_key_conversion.h \
        b40c/radixsort_reduction_kernel.h \
        b40c/radixsort_scanscatter_kernel.h \
        b40c/radixsort_scanscatter_kernel3.h \
        b40c/radixsort_scanscatter_kernel4.h \
        b40c/radixsort_spine_kernel.h \
        b40c/vector_types.h \
        cuda_common.h \
        cuda_sort2.h \
        cuda_sort2_spine.h \
        particles_cuda.h \
        psc_bnd_cuda.h \
        psc_bnd_cuda_fields.h \
        psc_cuda.h

libsubdir_la_LIBADD = \
        cuda_transfer.lo \
        cuda_spine.lo \
        cuda_sort2.lo \
        cuda_sort3.lo \
        cuda_exchange_particles.lo \
        cuda_exclusive_scan_2.lo \
        cuda_push_part_yz_1vb.lo

关于cuda_transfer.lo唯一看起来像是生成规则的东西是

代码语言:javascript
复制
cuda_transfer.lo: particles_cuda.h ../../include/psc_particles_cuda.h
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-08 14:30:14

好吧,最好永远不要读configure.ac :-)但是如果你仍然希望,configure.ac是m4预处理器代码和普通(伯恩)外壳代码片段的组合。您可以查看info m4和info autoconf,这些文档相当不错。

你问题的难点是关于.lo文件的。似乎你的makefile包含了依赖链,但是没有明确的构建规则。您可以尝试查找编译.c -> .lo的通用规则,如下所示:

代码语言:javascript
复制
.c.lo:
      $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
      $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
      ...
票数 1
EN

Stack Overflow用户

发布于 2018-11-30 17:57:08

试试这个:

代码语言:javascript
复制
yum -y install libtool*

然后清除并再次重新启动

票数 2
EN

Stack Overflow用户

发布于 2014-04-08 00:24:36

安装最新的libtool。删除.lo文件并再次使用'make‘。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21642600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档