我是使用libtool的新手。但是,這個問題似乎很奇怪。一切都在那裏,但libtool說:「libtool:link:'cuda_transfer.lo'不是一個有效的libtool對象」。但是,生成這個lo文件的規則就在Makefile中。此外,這兩個頭文件也適用於他們應該在哪裏並且能夠工作的地方。任何有關錯誤的想法?當一切都存在時,libtool沒有生成lo文件
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 [email protected] | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
$(LTCOMPILE) -MT [email protected] -MD -MP -MF $$depbase.Tpo -c -o [email protected] $< &&\
$(am__mv) $$depbase.Tpo $$depbase.Plo
# $(AM_V_CC)source='$<' object='[email protected]' libtool=yes \
# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
# $(AM_V_CC_no)$(LTCOMPILE) -c -o [email protected] $<
如何解釋這個人 - 不友好的代碼。 = =
下面是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
你有沒有,比如'lib_LTLIBRARIES = libsubdir.la',然後是'libsubdir_la_SOURCES = cuda_transfer.c'? –
我已經將該段添加到了我的問題描述中,如上所示。生成cuda_transfer.lo的規則也被插入。 – Asgard
那麼你在「LIBADD」中究竟是如何(預先構建)libtool對象?這些*將不會像現在這樣生成。預計它們會作爲正確的libtool對象存在,或者將其源代碼放在:'EXTRA_libsubdir_la_SOURCES'中。 –