Не удается подключиться к X-серверу: 0.0 с приложением Qt
Компиляция на Fedora 10.
Я только что начал свое первое приложение GUI qt. Я использовал все настройки по умолчанию.
Его простая форма. Он строит ОК без каких-либо ошибок. Но когда я пытаюсь запустить приложение. Я получаю следующее сообщение:
Starting /home/rob/projects/qt/test1/test1/test1...
No protocol specified
test1: cannot connect to X server :0.0
Спасибо за любой совет,
Ответы
Ответ 1
Общие причины этого следующие:
-
DISPLAY не установлен в среде.
Решение:
export DISPLAY=:0.0
./myQtCmdHere
(Этот, по-видимому, не тот, кто ошибается, поскольку его высказывание, в котором X отображает его попытку подключения, также не всегда 0.0, но большую часть времени оно есть)
-
Неавторизованный пользователь пытается запустить приложение X
Решение (как владелец X, то есть: самостоятельно)
xhost +local:root # where root is the local user you want to grant access to.
Ответ 2
Кроме того, если вы хотите, чтобы ваш X-сервер мог получать соединение через TCP, в наши дни вы должны почти всегда явно включать это. Чтобы проверить, разрешено ли сервером удаленные TCP-соединения, выполните следующие действия:
telnet 127.0.0.1 6000
Если telnet подключается, ваш X-сервер слушает. Если он не может, то ни одно удаленное приложение X не потребуется, и вам нужно включить удаленные TCP-соединения на вашем сервере.
Ответ 3
Добавление к приведенным выше ответам.
Я был в аналогичной ситуации во время выполнения тестов для Code2Pdf в travis.
Я решил проблему, используя xvfb-run. Цитата из manpage,
xvfb-run - это оболочка для команды Xvfb (1x), которая упрощает задачу запуска команд (обычно X-клиента или script, содержащего список клиентов, которые будут запущены) в среде виртуального X-сервера.
script, который я написал, был:
check_install_xvfb() { # check and install xvfb
if hash xvfb-run 2>/dev/null; then
:
else
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install xvfb
fi
}
check_install_xvfb
export DISPLAY=localhost:1.0
xvfb-run -a bash .misc/tests.sh
# .misc/tests.sh is script that runs unit tests. You can replace it with something suitable to you.
Пожалуйста, воздержитесь от моего стиля кода bash. Я программист noob bash.
Запуск выше script помог мне.
Вы можете увидеть неудачную сборку и передать сборку.
Надеюсь, что это поможет