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