2017-10-13 14:24 GMT-04:00 Mahmood N via Boost-users
<boost...@lists.boost.org>:
> _______________________________________________
> Boost-users mailing list
> Boost...@lists.boost.org
> https://lists.boost.org/mailman/listinfo.cgi/boost-users
--
Daniel
L'action accède à la perfection quand, bien que vivant, vous êtes déjà mort
Bunan
_______________________________________________
Boost-users mailing list
Boost...@lists.boost.org
https://lists.boost.org/mailman/listinfo.cgi/boost-users
once you know which step is failing it's easier to find the problem and fix it.
Do you have errors compiling ?
Do you have errors linking ?
then change your build system to output the commands and check for
missing arguments or misspelled paths.
in complex builds there could be more problems than just
compiling/linking of course i.e. configuration switch, defines, etc...
I'm working with Visual Studio Professional, I usually do not have
those kinds of problems.
but at a glance you seems to have linking problems.
2017-10-15 7:15 GMT-04:00 Mahmood N <nt_ma...@yahoo.com>:
> Hi Daniel,
> I tried some other versions based on the release date of the project and boosts. I tried 1.38 and 40 and 42 and 44 and 46. All of them return some undefined references.
>
> How can i find which boost version is used in the project?
>
> Regards,
> Mahmood
>
> --------------------------------------------
> On Sat, 10/14/17, Daniel Anderson <won...@gmail.com> wrote:
>
> Subject: Re: [Boost-users] Many undefined references for libboost_filesystem
> To: boost...@lists.boost.org
> Cc: "Mahmood N" <nt_ma...@yahoo.com>
> Date: Saturday, October 14, 2017, 12:53 AM
The error (undefined reference) clearly is in the linking step.
For example, I get
export BINDIR=/home/mahmood/gpgpu-sim_distribution/ispass2009-benchmarks/bin/; export ROOTDIR=/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src/; export BINSUBDIR=release; export BOOST_LIB=/home/mahmood/boost_1_40_0/lib; export BOOST_ROOT=/home/mahmood/boost_1_40_0; export BOOST_VER=""; export OPENMPI_BINDIR=/usr/bin/; make noinline=0 -C AES
make[1]: Entering directory `/home/mahmood/gpgpu-sim_distribution/ispass2009-benchmarks/AES'
obj/x86_64/release/aescuda.cpp.o: In function `_GLOBAL__sub_I_aescuda.cpp':
aescuda.cpp:(.text.startup+0x68b): undefined reference to `boost::system::get_system_category()'
aescuda.cpp:(.text.startup+0x697): undefined reference to `boost::system::get_generic_category()'
aescuda.cpp:(.text.startup+0x6a3): undefined reference to `boost::system::get_generic_category()'
aescuda.cpp:(.text.startup+0x6af): undefined reference to `boost::system::get_generic_category()'
aescuda.cpp:(.text.startup+0x6bb): undefined reference to `boost::system::get_system_category()'
And AES/Makefile contains
LINKFLAGS := -L$(BOOST_LIB)
As you can see the BOOST_LIB variable points to /home/mahmood/boost_1_40_0/lib and such functions are in the library files
mahmood@vb:boost_1_40_0$ grep -r get_system_category lib
Binary file lib/libboost_system.so.1.40.0 matches
Binary file lib/libboost_system.so matches
Binary file lib/libboost_system.a matches
Binary file lib/libboost_filesystem.a matches
Binary file lib/libboost_filesystem.so matches
Binary file lib/libboost_filesystem.so.1.40.0 matches
So, all things look normal. Isn’t that? Why I got that error?
Regards,
Mahmood
Sent from Mail for Windows 10
I see "export" but this does nothing to the linker. check if the
makefile uses those exports.
--
> check if the makefile uses those exports.
The Makefile is pretty straight forward (https://github.com/gpgpu-sim/ispass2009-benchmarks/tree/master/AES)
How can I check that?
--
I have stuck at this error and tried many versions but they all say the same thing. The makefile is available at
https://github.com/gpgpu-sim/ispass2009-benchmarks
mahmood@vb:ispass2009-benchmarks$ grep BOOST Makefile.ispass-2009
export BOOST_LIB=/home/mahmood/boost_1_54_0/stage/lib; \
export BOOST_ROOT=/home/mahmood/boost_1_54_0; \
export BOOST_VER=""; \
mahmood@vb:ispass2009-benchmarks$ grep boost AES/Makefile
LINKFLAGS := -L$(BOOST_LIB) -lboost_system -lboost_filesystem$(BOOST_VER)
mahmood@vb:ispass2009-benchmarks$ make -f Makefile.ispass-2009
rm -f ../common; ln -s /home/mahmood/NVIDIA_GPU_Computing_SDK/C/common ../common;
export BINDIR=/home/mahmood/gpgpu-sim_distribution/ispass2009-benchmarks/bin; export ROOTDIR=/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src/; export BINSUBDIR=release; export BOOST_LIB=/home/mahmood/boost_1_54_0/stage/lib; export BOOST_ROOT=/home/mahmood/boost_1_54_0; export BOOST_VER=""; export OPENMPI_BINDIR=/usr/bin/; make noinline=0 -C AES
make[1]: Entering directory `/home/mahmood/gpgpu-sim_distribution/ispass2009-benchmarks/AES'
obj/x86_64/release/aescuda.cpp.o: In function `_GLOBAL__sub_I_aescuda.cpp':
aescuda.cpp:(.text.startup+0x68b): undefined reference to `boost::system::get_system_category()'
aescuda.cpp:(.text.startup+0x697): undefined reference to `boost::system::get_generic_category()'
aescuda.cpp:(.text.startup+0x6a3): undefined reference to `boost::system::get_generic_category()'
aescuda.cpp:(.text.startup+0x6af): undefined reference to `boost::system::get_generic_category()'
aescuda.cpp:(.text.startup+0x6bb): undefined reference to `boost::system::get_system_category()'
obj/x86_64/release/aesCudaUtils.cpp.o: In function `boost::enable_if<boost::filesystem::is_basic_path<boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> >, bool>::type boost::filesystem::exists<boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> >(boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> const&)':
aesCudaUtils.cpp:(.text._ZN5boost10filesystem6existsINS0_10basic_pathISsNS0_11path_traitsEEEEENS_9enable_ifINS0_13is_basic_pathIT_EEbE4typeERKS7_[boost::enable_if<boost::filesystem::is_basic_path<boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> >, bool>::type boost::filesystem::exists<boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> >(boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> const&)]+0x22): undefined reference to `boost::system::get_system_category()'
aesCudaUtils.cpp:(.text._ZN5boost10filesystem6existsINS0_10basic_pathISsNS0_11path_traitsEEEEENS_9enable_ifINS0_13is_basic_pathIT_EEbE4typeERKS7_[boost::enable_if<boost::filesystem::is_basic_path<boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> >, bool>::type boost::filesystem::exists<boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> >(boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> const&)]+0x6b): undefined reference to `boost::filesystem::detail::status_api(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::system::error_code&)'
obj/x86_64/release/aesCudaUtils.cpp.o: In function `boost::enable_if<boost::filesystem::is_basic_path<boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> >, unsigned long>::type boost::filesystem::file_size<boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> >(boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> const&)':
aesCudaUtils.cpp:(.text._ZN5boost10filesystem9file_sizeINS0_10basic_pathISsNS0_11path_traitsEEEEENS_9enable_ifINS0_13is_basic_pathIT_EEmE4typeERKS7_[boost::enable_if<boost::filesystem::is_basic_path<boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> >, unsigned long>::type boost::filesystem::file_size<boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> >(boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> const&)]+0x55): undefined reference to `boost::filesystem::detail::file_size_api(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
obj/x86_64/release/aesCudaUtils.cpp.o: In function `_GLOBAL__sub_I_aesCudaUtils.cpp':
aesCudaUtils.cpp:(.text.startup+0x5): undefined reference to `boost::system::get_system_category()'
aesCudaUtils.cpp:(.text.startup+0x11): undefined reference to `boost::system::get_generic_category()'
aesCudaUtils..cpp:(.text.startup+0x1d): undefined reference to `boost::system::get_generic_category()'
aesCudaUtils.cpp:(.text.startup+0x29): undefined reference to `boost::system::get_generic_category()'
aesCudaUtils.cpp:(.text.startup+0x35): undefined reference to `boost::system::get_system_category()'
collect2: ld returned 1 exit status
make[1]: *** [/home/mahmood/gpgpu-sim_distribution/ispass2009-benchmarks/bin/release/AES] Error 1
make[1]: Leaving directory `/home/mahmood/gpgpu-sim_distribution/ispass2009-benchmarks/AES'
make: *** [default] Error 2
mahmood@vb:ispass2009-benchmarks$ ls -l /home/mahmood/boost_1_54_0/stage/lib/libboost_filesystem.*
-rw-rw-r-- 1 mahmood mahmood 213286 Oct 16 21:52 /home/mahmood/boost_1_54_0/stage/lib/libboost_filesystem.a
lrwxrwxrwx 1 mahmood mahmood 29 Oct 16 21:44 /home/mahmood/boost_1_54_0/stage/lib/libboost_filesystem.so -> libboost_filesystem.so.1.54.0
-rwxrwxr-x 1 mahmood mahmood 113400 Oct 16 21:44 /home/mahmood/boost_1_54_0/stage/lib/libboost_filesystem.so.1.54.0
mahmood@vb:ispass2009-benchmarks$ ls -l /home/mahmood/boost_1_54_0/stage/lib/libboost_system.*
-rw-rw-r-- 1 mahmood mahmood 49018 Oct 16 21:52 /home/mahmood/boost_1_54_0/stage/lib/libboost_system.a
lrwxrwxrwx 1 mahmood mahmood 25 Oct 16 21:44 /home/mahmood/boost_1_54_0/stage/lib/libboost_system.so -> libboost_system.so.1.54.0
-rwxrwxr-x 1 mahmood mahmood 20431 Oct 16 21:44 /home/mahmood/boost_1_54_0/stage/lib/libboost_system.so.1.54.0
what is the command producing that error ?
make is just a program executing a script file Makefile.ispass-2009
so you must find out if Makefile.ispass-2009 is trying to link, or it
may itself executing another make command.
but ultimately there is a link cmd being executing and failing (as far
as I can tell).
as I use windows, I cannot execute the makefile for you and find the
error, you'll have to walk that path by yourself, or ask a colleague.
--
mahmood@vb:ispass2009-benchmarks$ grep BOOST Makefile.ispass-2009
export BOOST_LIB=/home/mahmood/boost_1_54_0/stage/lib; \
export BOOST_ROOT=/home/mahmood/boost_1_54_0; \
export BOOST_VER=""; \
mahmood@vb:ispass2009-benchmarks$ grep boost AES/Makefile
LINKFLAGS := -L$(BOOST_LIB) -lboost_system -lboost_filesystem$(BOOST_VER)
mahmood@vb:ispass2009-benchmarks$ make -f Makefile.ispass-2009
rm -f ../common; ln -s /home/mahmood/NVIDIA_GPU_Computing_SDK/C/common ../common;
export BINDIR=/home/mahmood/gpgpu-sim_distribution/ispass2009-benchmarks/bin; export ROOTDIR=/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src/; export BINSUBDIR=release; export BOOST_LIB=/home/mahmood/boost_1_54_0/stage/lib; export BOOST_ROOT=/home/mahmood/boost_1_54_0; export BOOST_VER=""; export OPENMPI_BINDIR=/usr/bin/; make noinline=0 -C AES
make[1]: Entering directory `/home/mahmood/gpgpu-sim_distribution/ispass2009-benchmarks/AES'
obj/x86_64/release/aescuda.cpp.o: In function `_GLOBAL__sub_I_aescuda.cpp':
aescuda.cpp:(.text.startup+0x68b): undefined reference to `boost::system::get_system_category()'
aescuda.cpp:(.text.startup+0x697): undefined reference to `boost::system::get_generic_category()'
aescuda.cpp:(.text.startup+0x6a3): undefined reference to `boost::system::get_generic_category()'
aescuda.cpp:(.text.startup+0x6af): undefined reference to `boost::system::get_generic_category()'
aescuda.cpp:(.text.startup+0x6bb): undefined reference to `boost::system::get_system_category()'
make[1]: Entering directory `/home/mahmood/gpgpu-sim_distribution/ispass2009-benchmarks/AES'
obj/x86_64/release/aescuda.cpp.o: In function `_GLOBAL__sub_I_aescuda.cpp':
aescuda.cpp:(.text.startup+0x68b): undefined reference to `boost::system::get_system_category()'
So, I finally found how to see the invoked command! In the common.mk file, I saw
# check if verbose
ifeq ($(verbose), 1)
VERBOSE :=
else
VERBOSE := @
Endif
With an ugly workaround, I changed it to
# check if verbose
ifeq ($(verbose), 1)
VERBOSE :=
else
VERBOSE :=
endif
I didn’t want to have another pain for “finding how the verbose variable is set in the Makefile”!!!
Here is the full output with the command. The libraries do exist, so why on earth it can not link :(
mahmood@vb:AES$ g++ -fPIC -L/home/mahmood/boost_1_54_0/stage/lib -lboost_filesystem -lboost_system -m64 -o /home/mahmood/gpgpu-sim_distribution/ispass2009-benchmarks/bin/release/AES obj/x86_64/release/aescuda.cpp.o obj/x86_64/release/aesCudaUtils.cpp.o obj/x86_64/release/aesHost.cu.o -L/usr/local/cuda/lib64 -L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../lib -L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../common/lib/linux -L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../../shared//lib -lcudart -L/usr/local/cuda/lib64 -L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../lib -L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../common/lib/linux -L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../../shared//lib -lcudart -lcutil_x86_64 -lshrutil_x86_64
obj/x86_64/release/aescuda.cpp.o: In function `_GLOBAL__sub_I_aescuda.cpp':
aescuda.cpp:(.text.startup+0x68b): undefined reference to `boost::system::get_system_category()'
aescuda.cpp:(.text.startup+0x697): undefined reference to `boost::system::get_generic_category()'
aescuda.cpp:(.text.startup+0x6a3): undefined reference to `boost::system::get_generic_category()'
aescuda.cpp:(.text.startup+0x6af): undefined reference to `boost::system::get_generic_category()'
aescuda.cpp:(.text.startup+0x6bb): undefined reference to `boost::system::get_system_category()'
obj/x86_64/release/aesCudaUtils.cpp.o: In function `boost::enable_if<boost::filesystem::is_basic_path<boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> >, bool>::type boost::filesystem::exists<boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> >(boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> const&)':
aesCudaUtils.cpp:(.text._ZN5boost10filesystem6existsINS0_10basic_pathISsNS0_11path_traitsEEEEENS_9enable_ifINS0_13is_basic_pathIT_EEbE4typeERKS7_[boost::enable_if<boost::filesystem::is_basic_path<boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> >, bool>::type boost::filesystem::exists<boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> >(boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> const&)]+0x22): undefined reference to `boost::system::get_system_category()'
aesCudaUtils.cpp:(.text._ZN5boost10filesystem6existsINS0_10basic_pathISsNS0_11path_traitsEEEEENS_9enable_ifINS0_13is_basic_pathIT_EEbE4typeERKS7_[boost::enable_if<boost::filesystem::is_basic_path<boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> >, bool>::type boost::filesystem::exists<boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> >(boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> const&)]+0x6b): undefined reference to `boost::filesystem::detail::status_api(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::system::error_code&)'
obj/x86_64/release/aesCudaUtils.cpp.o: In function `boost::enable_if<boost::filesystem::is_basic_path<boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> >, unsigned long>::type boost::filesystem::file_size<boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> >(boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> const&)':
aesCudaUtils.cpp:(.text._ZN5boost10filesystem9file_sizeINS0_10basic_pathISsNS0_11path_traitsEEEEENS_9enable_ifINS0_13is_basic_pathIT_EEmE4typeERKS7_[boost::enable_if<boost::filesystem::is_basic_path<boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> >, unsigned long>::type boost::filesystem::file_size<boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> >(boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> const&)]+0x55): undefined reference to `boost::filesystem::detail::file_size_api(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
obj/x86_64/release/aesCudaUtils.cpp.o: In function `_GLOBAL__sub_I_aesCudaUtils.cpp':
aesCudaUtils.cpp:(.text.startup+0x5): undefined reference to `boost::system::get_system_category()'
aesCudaUtils.cpp:(.text.startup+0x11): undefined reference to `boost::system::get_generic_category()'
aesCudaUtils.cpp:(.text.startup+0x1d): undefined reference to `boost::system::get_generic_category()'
aesCudaUtils.cpp:(.text.startup+0x29): undefined reference to `boost::system::get_generic_category()'
aesCudaUtils.cpp:(.text.startup+0x35): undefined reference to `boost::system::get_system_category()'
collect2: ld returned 1 exit status
mahmood@vb:AES$ ls /home/mahmood/boost_1_54_0/stage/lib/libboost_system.*
/home/mahmood/boost_1_54_0/stage/lib/libboost_system.a
/home/mahmood/boost_1_54_0/stage/lib/libboost_system.so
/home/mahmood/boost_1_54_0/stage/lib/libboost_system.so.1.54.0
mahmood@vb:AES$ ls /home/mahmood/boost_1_54_0/stage/lib/libboost_filesystem.*
/home/mahmood/boost_1_54_0/stage/lib/libboost_filesystem.a
/home/mahmood/boost_1_54_0/stage/lib/libboost_filesystem.so
/home/mahmood/boost_1_54_0/stage/lib/libboost_filesystem.so.1.54.0
mahmood@vb:AES$
From: Boost-users [mailto:boost-use...@lists.boost.org] On Behalf Of mahmood n via Boost-users
Sent: 17 October 2017 15:23
To: Alex Perry; boost...@lists.boost.org
Cc: mahmood n
Subject: Re: [Boost-users] Many undefined references for libboost_filesystem
So, I finally found how to see the invoked command!
Here is the full output with the command. The libraries do exist, so why on earth it can not link :(
mahmood@vb:AES$ g++ -fPIC -L/home/mahmood/boost_1_54_0/stage/lib -lboost_filesystem -lboost_system -m64 -o /home/mahmood/gpgpu-sim_distribution/ispass2009-benchmarks/bin/release/AES obj/x86_64/release/aescuda.cpp.o obj/x86_64/release/aesCudaUtils.cpp.o obj/x86_64/release/aesHost.cu.o -L/usr/local/cuda/lib64 -L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../lib -L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../common/lib/linux -L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../../shared//lib -lcudart -L/usr/local/cuda/lib64 -L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../lib -L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../common/lib/linux -L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../../shared//lib -lcudart -lcutil_x86_64 -lshrutil_x86_64
Does adding –v option (verbose) to this line tell you anything helpful?
(like the directories it is searching? - or, more likely, not searching ;-) )
Paul
---
Paul A. Bristow
Prizet Farmhouse
Kendal UK LA8 8AB
>Does adding –v option (verbose) to this line tell you anything helpful?
>(like the directories it is searching? - or, more likely, not searching ;-) )
Here it is. I don’t see anything useful in the verbose output. Do you?
mahmood@vb:AES$ g++ -v -fPIC -L/home/mahmood/boost_1_54_0/stage/lib -lboost_filesystem -m64 -o /home/mahmood/gpgpu-sim_distribution/ispass2009-benchmarks/bin/release/AES obj/x86_64/release/aescuda.cpp.o obj/x86_64/release/aesCudaUtils.cpp.o obj/x86_64/release/aesHost.cu.o -L/usr/local/cuda/lib64 -L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../lib -L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../common/lib/linux -L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../../shared//lib -lcudart -L/usr/local/cuda/lib64 -L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../lib -L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../common/lib/linux -L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../../shared//lib -lcudart -lcutil_x86_64 -lshrutil_x86_64
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.6/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.3-1ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.6/:/usr/lib/gcc/x86_64-linux-gnu/4.6/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.6/:/usr/lib/gcc/x86_64-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.6/:/usr/lib/gcc/x86_64-linux-gnu/4.6/../../.../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-fPIC' '-L/home/mahmood/boost_1_54_0/stage/lib' '-m64' '-o' '/home/mahmood/gpgpu-sim_distribution/ispass2009-benchmarks/bin/release/AES' '-L/usr/local/cuda/lib64' '-L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../lib' '-L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../common/lib/linux' '-L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../../shared//lib' '-L/usr/local/cuda/lib64' '-L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../lib' '-L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../common/lib/linux' '-L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../../shared//lib' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
/usr/lib/gcc/x86_64-linux-gnu/4.6/collect2 --sysroot=/ --build-id --no-add-needed --as-needed --eh-frame-hdr -m elf_x86_64 --hash-style=gnu -dynamic-linker /lib64/ld-linux-x86-64..so.2 -z relro -o /home/mahmood/gpgpu-sim_distribution/ispass2009-benchmarks/bin/release/AES /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crt1.o /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.6/crtbegin.o -L/home/mahmood/boost_1_54_0/stage/lib -L/usr/local/cuda/lib64 -L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../lib -L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../common/lib/linux -L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../../shared//lib -L/usr/local/cuda/lib64 -L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../lib -L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../common/lib/linux -L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../../shared//lib -L/usr/lib/gcc/x86_64-linux-gnu/4.6 -L/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.6/../../.. -lboost_filesystem obj/x86_64/release/aescuda.cpp.o obj/x86_64/release/aesCudaUtils.cpp.o obj/x86_64/release/aesHost.cu.o -lcudart -lcudart -lcutil_x86_64 -lshrutil_x86_64 -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/4.6/crtend.o /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crtn.o
obj/x86_64/release/aescuda.cpp.o: In function `_GLOBAL__sub_I_aescuda.cpp':
aescuda.cpp:(.text.startup+0x68b): undefined reference to `boost::system::get_system_category()'
….
all look good, I assume that the linker is add lib in front of the
name of your argument, does it add suffix also ?
look for an option to get the list of libs it found when trying to link.
2 thinks can happen:
the lib name is not the one you think (in windows they have .lib
extension, not .so)
it finds another lib with the same name in another directory.
you have the link cmd, use it directly it will be easier maybe to find
your problem
make sure you understand all the options use for linking, your problem
could be there also.
2017-10-17 12:50 GMT-04:00 mahmood n via Boost-users
<boost...@lists.boost.org>:
> _______________________________________________
> Boost-users mailing list
> Boost...@lists.boost.org
> https://lists.boost.org/mailman/listinfo.cgi/boost-users
--
Daniel
L'action accède à la perfection quand, bien que vivant, vous êtes déjà mort
Bunan
I used another gcc version 4.5 (Ubuntu 11.04) and it works without any problem!
I don’t know what is wrong with gcc-4.6. Though the problematic platform was Kubuntuu 12.04.
I am know trying with Ubuntu 12.04 which uses gcc-4.6 to see if it is really a gcc problem or the platform!
From: Alex Perry
Sent: Wednesday, October 18, 2017 4:45 PM
To: mahmood n
Subject: RE: [Boost-users] Many undefined references for libboost_filesystem
Actually one other thought (though you may well have solved this by now).
Are you sure that the boost libraries you are attempting to link to are using the same abi?
Ie how were they built.
I only glanced at the github stuff you pointed too but I think I remember that the last commit was 5 years ago or some such – so probably wasn’t using C++11.
I note you are using an old (54) version of boost whilst the current is (65) so about 5 years ago as well – but that probably supported being built with c++11.so you might need to rebuild them if they were using a different version of the C++ standard (or any abi breaking change such as 32 vs 64 bit, static runtime vs dynamically loaded etc).
Under windows boost normally encodes the abi into the library name and you just automagically (using a msvc extension) link to the appropriate one. That is not the normal way on linux since gcc doesn’t have autolinking so you normally end up sticking them into a separate lib directory and swapping the -L path depending on which abi you want
Again though please note this is not boost specific – is just standard C / C++ / Fortran or any obj/link based language issues with building dependencies – (and why most have swapped to using cmake rather than vanilla make to avoid the pain).
A.
From: Alex Perry
Sent: 17 October 2017 16:14
To: 'mahmood n' <nt_ma...@yahoo.com>
Subject: RE: [Boost-users] Many undefined references for libboost_filesystem
Dropped the rest of the boost list since I’m sure not many are interested!
> I didn’t want to have another pain for “finding how the verbose variable is set in the Makefile”!!!
Not hard that one… just add it to the command line when you call make
make verbose=1 …..
> The libraries do exist, so why on earth it can not link :(
> mahmood@vb:AES$ g++ -fPIC -L/home/mahmood/boost_1_54_0/stage/lib -lboost_filesystem -lboost_system -m64 -o /home/mahmood/gpgpu-sim_distribution/ispass2009-benchmarks/bin/release/AES obj/x86_64/release/aescuda.cpp.o obj/x86_64/release/aesCudaUtils.cpp.o obj/x86_64/release/aesHost.cu.o -L/usr/local/cuda/lib64 -L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../lib -L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../common/lib/linux -L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../../shared//lib -lcudart -L/usr/local/cuda/lib64 -L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../lib -L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../common/lib/linux -L/home/mahmood/NVIDIA_GPU_Computing_SDK/C/src//../../shared//lib -lcudart -lcutil_x86_64 -lshrutil_x86_64
….
Nope the computer is telling you they don’t exist on those paths as given – unfortunately the computer is more likely to be correct than you on this!
You have a lot of library paths being set there – possibly you have multiple versions of boost libraries so its finding the wrong one first so you have a version conflict
Possibly the simplest way is create a noddy test and play with the command line till you work out what the problem is
http://rextester.com/live/JDVHT54458
That will give you similar compile errors without -lboost_filesystem -lboost_system added to the compile line.
Obviously that is using clang rather than gcc which you are using but the syntax and principles are pretty much the same between any c++ compiler
HTH
A.
Glad to hear you’ve made progress - these things can be frustrating to say the least….
I can’t really remember the issues for old gcc versions (it was 5 years or so ago since I last used 4.x gcc) but there are resources listing abi breakages https://gcc.gnu.org/wiki/Cxx11AbiCompatibility as far as I can remember it was just best to recompile all dependencies making sure the compiler flags didn’t ever differ – later gcc’s were better for this but using clang became our preferred solution.
Once you’ve gone down the line of rebuilding every dep then you may as well use a newer compiler rather than the one used by the particular linux packager.
It does mean you can’t just apt-get X-devel to get X (since that will be built with the wrong compiler and so may or may not work but regardless is a risk) which is a slight pain – but tbh linux packages are always a bit of a hacky solution and don’t fit well with anyone who is building software x-platform (or even X-linux variants)– ie they may make life a bit simpler for a trivial case but generally you need to control how all parts of your solution are built and short cuts like pre-built binaries tend to come back to bite you eventually.
A.
From: Boost-users [mailto:boost-use...@lists.boost.org] On Behalf Of mahmood n via Boost-users
Sent: 19 October 2017 07:59
To: Alex Perry
Cc: mahmood n; boost...@lists.boost.org
Subject: Re: [Boost-users] Many undefined references for libboost_filesystem
I used another gcc version 4.5 (Ubuntu 11.04) and it works without any problem!
I don’t know what is wrong with gcc-4.6. Though the problematic platform was Kubuntuu 12.04.
I am know trying with Ubuntu 12.04 which uses gcc-4.6 to see if it is really a gcc problem or the platform!
Good luck.
But as a PS, I’m puzzled that you are using such old software, both GCC (on version 7) and Boost (on 1.65) – and Ubuntu too (on 16.04), known to be riddled with many Old Bugs.
I would have thought that you would be much better off without those bugs (even if that adds a few New Bugs) by starting with all new current software. (If management objects, tell them there is a price for using obsolete software, and you are paying it now).
On: 19 October 2017 08:47
Alex Perry wrote:
>>Glad to hear you’ve made progress - these things can be frustrating to say the least….
Woops sorry for the noise – didn’t see that Mahmood had added boost list back in as a CC.
Mahmood please read http://www.boost.org/community/policy.html for guidelines on posting to the list
Alex
Thanks for the suggestions you guys made for this problem. I really don’t know why gcc-4.6 fails. I even tried Ubuntu 14.04 with gcc 4.6 and it again failed. But gcc 4.4 and 4.5 are OK.
Sent from Mail for Windows 10
From: Alex Perry
Sent: Thursday, October 19, 2017 2:59 PM
To: mahmood n
Cc: boost...@lists.boost.org
Subject: RE: [Boost-users] Many undefined references for libboost_filesystem
On: 19 October 2017 08:47