On 6/23/19 2:56 PM, Yuri wrote:
On FreeBSD libtool can't find operator new[] because it is in C mode:

libtool: link: cc -fno-strict-aliasing -fopenmp -ftree-vectorize -pthread -O2 -pipe -fno-omit-frame-pointer -fstack-protector-strong -fno-strict-aliasing -fno-strict-aliasing -fstack-protector-strong -o RNALfold RNALfold_cmdl.o RNALfold.o ../../src/ViennaRNA/.libs/libRNA_conv.a ./.libs/libhelpers.a -lm -pthread -fopenmp libtool: link: cc -fno-strict-aliasing -fopenmp -ftree-vectorize -pthread -O2 -pipe -fno-omit-frame-pointer -fstack-protector-strong -fno-strict-aliasing -fno-strict-aliasing -fstack-protector-strong -o RNALalifold RNALalifold_cmdl.o RNALalifold.o ../../src/ViennaRNA/.libs/libRNA_conv.a ./.libs/libhelpers.a -lm -pthread -fopenmp
ld: error: undefined symbol: operator new[](unsigned long)
 >>> referenced by svm.cpp
>>>               svm.o:(Kernel::Kernel(int, svm_node* const*, svm_parameter const&)) in archive ../../src/ViennaRNA/.libs/libRNA_conv.a



I added "LT_LANG([C++]) to configure.ac but it didn't help:

AC_PROG_LIBTOOL
LT_INIT([pic-only, static])
LT_LANG([C++])
AC_SUBST(LIBTOOL_DEPS)


How to switch libtool to the C++ mode?

Are you using automake?  Or just libtool and autoconf?

With automake, the info at the end of the following section in the manual might help:


https://www.gnu.org/software/automake/manual/automake.html#Libtool-Convenience-Libraries

I think the same idea applies to executable files, not just building libraries from a collection of convenience libraries. So (again, with automake) you can trick the system into using C++ for linking by having a C++ source file directly in the list of files to link. That C++ source file doesn't have to contain anything or even exist. Automake just notes that there is a C++ file in the list of files to link and uses the C++ linker.

jwe

_______________________________________________
https://lists.gnu.org/mailman/listinfo/libtool

Reply via email to