cmake 3.10 не может внутренне протестировать библиотеку blas - PullRequest
0 голосов
/ 26 апреля 2018

Я не могу работать с моей библиотекой blas с cmake. У меня есть arch-linxux, и blas, и cmake устанавливаются вместе с pacman. Не могу понять, в чем проблема :-(. Я сделал cmake, чтобы распечатать вывод макроса CHECK_FORTRAN_FUNCTION_EXISTS, потому что там он не работает. Может быть, у меня нет правильной конфигурации ld?

Мой простой тест CMakeLists.txt:

cmake_minimum_required(VERSION 2.8)
project(Test C Fortran)
find_package(BLAS)

Ошибка части с выхода:

-- Looking for Fortran sgemm
-- Change Dir: /home/jiri/test_lapack/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_486fc/fast"
/usr/bin/make -f CMakeFiles/cmTC_486fc.dir/build.make CMakeFiles/cmTC_486fc.dir/build
make[1]: Entering directory '/home/jiri/test_lapack/CMakeFiles/CMakeTmp'
Building Fortran object CMakeFiles/cmTC_486fc.dir/testFortranCompiler.f.o
/usr/bin/gfortran    -c /home/jiri/test_lapack/CMakeFiles/CMakeTmp/testFortranCompiler.f -o CMakeFiles/cmTC_486fc.dir/testFortranCompiler.f.o
Linking Fortran executable cmTC_486fc
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_486fc.dir/link.txt --verbose=1
/usr/bin/gfortran      CMakeFiles/cmTC_486fc.dir/testFortranCompiler.f.o  -o cmTC_486fc /usr/local/lib64/libblas.a 
/usr/bin/ld: /usr/local/lib64/libblas.a(sgemm.f.o): relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: /usr/local/lib64/libblas.a(xerbla.f.o): relocation R_X86_64_32S against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: final link failed: Nonrepresentable section on output
collect2: error: ld returned 1 exit status
make[1]: *** [CMakeFiles/cmTC_486fc.dir/build.make:99: cmTC_486fc] Error 1
make[1]: Leaving directory '/home/jiri/test_lapack/CMakeFiles/CMakeTmp'
make: *** [Makefile:126: cmTC_486fc/fast] Error 2

-- Looking for Fortran sgemm - not found
...