CMake не может сгенерировать путь поиска из-за конфликта библиотеки - PullRequest
0 голосов
/ 30 сентября 2019

Уважаемые коллеги, я новичок в LINUX и пытаюсь использовать CMake для создания примера Geant4. После следующей команды

  $cmake ~/Geant4/geant4.10.05.p01-install/share/Geant4-10.5.1/examples/basic/B1/

я получаю это сообщение об ошибке:

  Cannot generate a safe runtime search path for target exampleB1 because files in some directories 
  may conflict with libraries in implicit directories:
  runtime library [libexpat.so.1] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
  /home/dakar/anaconda3/lib

  Some of these libraries may not be found correctly.

Предупреждение правильное, и когда я запускаю $ make -j6, я получаю сообщение об ошибке

    /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libSM.so: undefined reference to 
    ‘uuid_generate@UUID_1.0’
    /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libSM.so: undefined reference 
    to‘uuid_unparse_lower@UUID_1.0’

Эта проблема встречалась ранее, и некоторые решения подробно описаны здесь:

https://github.com/pism/pism/issues/356

На странице URL-ссылки, указывающие, что для Conda 4.4+ эта проблема не должнапроисходят. Я использую Conda 4.6.14, но на странице добавлено, что если это произойдет: вы можете установить переменную NOCONDA_PATH в вашем .bashrc (или аналогичном) непосредственно перед тем, как добавить conda в ваш путь, например:

    export NOCONDA_PATH=$PATH
    export PATH=$HOME/anaconda3/bin:$PATH

Я попробовал это, и мой .bashrc теперь читает:

# >>> conda init >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$(CONDA_REPORT_ERRORS=false '/home/dakar/anaconda3/bin/conda' shell.bash hook 2> /dev/null$
if [ $? -eq 0 ]; then
    \eval "$__conda_setup"
else
    if [ -f "/home/dakar/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/home/dakar/anaconda3/etc/profile.d/conda.sh"
        CONDA_CHANGEPS1=false conda activate base
    else
#       \export NOCONDA_PATH=$PATH
        \export PATH="/home/dakar/anaconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda init <<<

export CLHEP_DIR=/home/dakar/CLHEP/2.3.3.2/CLHEP-install/
export CLHEP_INCLUDE_DIR=${CLHEP_DIR}/include/
export CLHEP_LIBRARY=${CLHEP_DIR}/lib/
export LD_LIBRARY_PATH=${CLHEP_LIBRARY}:${LD_LIBRARY_PATH}
export PATH=$CLHEP_DIR/bin/:$PATH

export TOPAS_G4_DATA_DIR=~/G4Data
export LD_LIBRARY_PATH=~/topas/libexternal/:$LD_LIBRARY_PATH
#export LD_LIBRARY_PATH=~/anaconda3/lib/gcc/lib:$LD_LIBRARY_PATH
#CERN ROOT
#export ROOTSYS=/usr/local/root
#export PATH=$ROOTSYS/bin:$PATH
#export PYTHONDIR=$ROOTSYS
#export LD_LIBRARY_PATH=$ROOTSYS/lib:$PYTHONDIR/lib:$ROOTSYS/bindings/pyroot:$LD_LIBRARY_PATH
#export PYTHONPATH=$ROOTSYS/lib:$PYTHONPATH:$ROOTSYS/bindings/pyroot
source ~/Geant4/geant4.10.05.p01-install/bin/geant4.sh
#source ~/Geant4/geant4.10.05.p01-install/share/Geant4-10.5.1/geant4make/geant4make.sh

export NOCONDA_PATH=$PATH
export PATH="/home/dakar/anaconda3/bin:$PATH"

Это все еще не решило проблему. Когда я запускаю echo $PATH, я все еще вижу каталоги conda:

$ echo $PATH
/home/dakar/anaconda3/bin:/home/dakar/Geant4/geant4.10.05.p01-install/bin:/home/dakar/CLHEP/2.3.3.2/CLHEP-install//bin/:/home/dakar/anaconda3/bin:/home/dakar/anaconda3/condabin:/usr/local/cuda-8.0/bin:/home/dakar/bin:/home/dakar/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

У кого-нибудь есть еще советы? Будет ли удаление самой Конды решением проблемы.

Спасибо за ваше время. L

1 Ответ

0 голосов
/ 30 сентября 2019

В сообщении об ошибке указывается, что в вызове компоновщика отсутствует libuuid.

Попробуйте добавить -luuid к вашим флагам компоновщика.

Использует ли ваша система сборки pkg-config? В этом случае вы можете отредактировать /usr/lib/x86_64-linux-gnu/pkgconfig/sm.pc и добавить -luuid к разделу Libs.

Это похоже на ошибку в вашем Linux-дистрибутиве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...