我是使用libtool的新手。但是,这个问题似乎很奇怪。一切都在那里,但libtool说“libtool:link:'cuda_transfer.lo'不是一个有效的libtool对象”。但是,生成此lo文件的规则就在Makefile中。此外,这两个头文件也在它们应该的位置并且正常工作。关于出了什么问题的任何想法?
cuda_transfer.lo: particles_cuda.h ../../include/psc_particles_cuda.h
在Makefile中出现cuda_transfer.lo的另外两个地方是
libsubdir_la_DEPENDENCIES = cuda_transfer.lo \
libsubdir_la_LIBADD = \
cuda_transfer.lo \
.c.lo:段如下:
.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建议的代码段。
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的生成规则是
cuda_transfer.lo: particles_cuda.h ../../include/psc_particles_cuda.h
答案 0 :(得分:1)
嗯,最好不要永远阅读configure.ac
:-)但如果您仍然希望,configure.ac
是m4
预处理程序代码和普通(bourne)shell代码段的组合。您可以查看info m4
和info autoconf
,文档相当不错。
关于.lo
文件的问题的难点部分。您的makefile似乎包含依赖链,但没有明确的构建规则。您可以尝试找到用于编译.c
- &gt;的常用规则。 .lo
,就像这样:
.c.lo:
$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
...
答案 1 :(得分:1)
尝试一下:
yum -y install libtool*
然后清理并重新启动
答案 2 :(得分:0)
安装最新的libtool。删除.lo文件并再次使用'make'。