nv cc ошибка компиляции ld ошибка неопределенная ссылка на символ 'XConvertSelection' - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь скомпилировать nv cc, который работает на других машинах и кластерах, теперь, когда я работаю на машине x86-64, я получаю ошибки для relocation R_X86_64_32 against ... различных файлов lib и ошибок. размещение --compiler-options после соответствующих библиотек, которые отметили ошибки. добавление -fPIC после приводит к возвращению ошибки. Поэтому я очень смущен.

Команда (легко читаемая):

nvcc -o exe/prog src/main.cu -gencode=arch=compute_20,code=sm_20 -gencode=arch=compute_30,code=sm_30 -gencode arch=compute_37,code=sm_37 -gencode=arch=compute_50,code=sm_50 -gencode=arch=compute_52,code=sm_52 -gencode=arch=compute_52,code=compute_52 -L/home/mohamed/PhD/VENV/lib -L/home/mohamed/PhD/VENV/glew-1.10.0/lib -llua -lGLEW -lglfw3 -lcuda -lGLU -ljpeg -lGL -lGLU -lglfw3 --compiler-options -lX11 -lXxf86vm -lXrandr -lpthread -lXi -I ./code_generator_lua/utils/ -I/home/mohamed/PhD/VENV/include/GLFW -I/home/mohamed/PhD/VENV/glew-1.10.0/include -I ./utils2/visualisation -D WITH_OPENGL -I ./geo -I/home/mohamed/PhD/VENV/lua-5.1.5/src -I/home/mohamed/PhD/VENV/boost_1_61_0 -I/usr/local/cuda-7.5/samples/common/inc

Вот мой вывод командной строки компиляции (терминал) (пожалуйста, игнорируйте предупреждения - они нормальные):

nvcc -o exe/prog src/main.cu -gencode=arch=compute_20,code=sm_20 -gencode=arch=compute_30,code=sm_30 -gencode arch=compute_37,code=sm_37 -gencode=arch=compute_50,code=sm_50 -gencode=arch=compute_52,code=sm_52 -gencode=arch=compute_52,code=compute_52 -L/home/mohamed/PhD/VENV/lib -L/home/mohamed/PhD/VENV/glew-1.10.0/lib -llua -lGLEW -lglfw3 -lcuda -lGLU -ljpeg -lGL -lGLU -lglfw3 --compiler-options -lX11 -lXxf86vm -lXrandr -lpthread -lXi -I ./code_generator_lua/utils/ -I/home/mohamed/PhD/VENV/include/GLFW -I/home/mohamed/PhD/VENV/glew-1.10.0/include -I ./utils2/visualisation -D WITH_OPENGL -I ./geo -I/home/mohamed/PhD/VENV/lua-5.1.5/src -I/home/mohamed/PhD/VENV/boost_1_61_0 -I/usr/local/cuda-7.5/samples/common/inc

/home/mohamed/PhD/VENV/boost_1_61_0/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp(75): warning: variable "tmp" was set but never used

src/main.cu(364): warning: variable "fname2" was declared but never referenced

src/main.cu(392): warning: conversion from a string literal to "char *" is deprecated

/home/mohamed/PhD/VENV/boost_1_61_0/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp(75): warning: variable "tmp" was set but never used

src/main.cu(364): warning: variable "fname2" was declared but never referenced

src/main.cu(392): warning: conversion from a string literal to "char *" is deprecated

/home/mohamed/PhD/VENV/boost_1_61_0/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp(75): warning: variable "tmp" was set but never used

src/main.cu(364): warning: variable "fname2" was declared but never referenced

src/main.cu(392): warning: conversion from a string literal to "char *" is deprecated

/home/mohamed/PhD/VENV/boost_1_61_0/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp(75): warning: variable "tmp" was set but never used

src/main.cu(364): warning: variable "fname2" was declared but never referenced

src/main.cu(392): warning: conversion from a string literal to "char *" is deprecated

/home/mohamed/PhD/VENV/boost_1_61_0/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp(75): warning: variable "tmp" was set but never used

src/main.cu(364): warning: variable "fname2" was declared but never referenced

src/main.cu(392): warning: conversion from a string literal to "char *" is deprecated

/home/mohamed/PhD/VENV/boost_1_61_0/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp(75): warning: variable "tmp" was set but never used

src/main.cu(364): warning: variable "fname2" was declared but never referenced

src/main.cu(392): warning: conversion from a string literal to "char *" is deprecated

/home/mohamed/PhD/VENV/boost_1_61_0/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp(75): warning: variable "tmp" was set but never used

src/main.cu(364): warning: variable "fname2" was declared but never referenced

src/main.cu(392): warning: conversion from a string literal to "char *" is deprecated

/home/mohamed/PhD/VENV/boost_1_61_0/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp(75): warning: variable "tmp" was set but never used

src/main.cu(364): warning: variable "fname2" was declared but never referenced

src/main.cu(392): warning: conversion from a string literal to "char *" is deprecated

/home/mohamed/PhD/VENV/boost_1_61_0/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp(75): warning: variable "tmp" was set but never used

src/main.cu(364): warning: variable "fname2" was declared but never referenced

src/main.cu(392): warning: conversion from a string literal to "char *" is deprecated

/home/mohamed/PhD/VENV/boost_1_61_0/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp(75): warning: variable "tmp" was set but never used

src/main.cu(364): warning: variable "fname2" was declared but never referenced

src/main.cu(392): warning: conversion from a string literal to "char *" is deprecated

/usr/bin/ld: /home/mohamed/PhD/VENV/lib/libglfw3.a(x11_clipboard.c.o): undefined reference to symbol 'XConvertSelection'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libX11.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

1 Ответ

0 голосов
/ 10 марта 2020

Я исправил проблему для всех, кто использует новые системы и использует старые коды. На самом деле это была проблема с ошибкой relocation R_X86_64_32 ... из-за библиотек stati c и dynamici c. Теперь решение для этого можно найти, запустив g cc в моем случае nv cc с флагом no-pie, если вы используете ag cc и версию g ++ <4.8. Также, чтобы убедиться, что даже g cc 4.8 и p ie не были включены по умолчанию. Вы можете проверить включенные значения по умолчанию, проверив версию <code>gcc -v.

...