Не удается подключиться к X-серверу:0.0 с приложением Qt
Компиляция на Fedora 10.
Я только что запустил свое первое приложение с графическим интерфейсом qt. Я использовал все настройки по умолчанию.
Это просто простая форма. Он строит ОК без каких-либо ошибок. Но когда я пытаюсь запустить приложение. Я получаю следующее сообщение:
Starting /home/rob/projects/qt/test1/test1/test1...
No protocol specified
test1: cannot connect to X server :0.0
Спасибо за любой совет,
3 ответа
Основные причины этого следующие:
ДИСПЛЕЙ не установлен в окружающей среде.
Решение: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.
Кроме того, если вы хотите, чтобы ваш X-сервер мог получать соединение по TCP, в эти дни вы почти всегда должны явно включать это. Чтобы проверить, разрешает ли ваш сервер удаленные TCP-соединения, попробуйте:
телнет 127.0.0.1 6000
Если telnet может подключиться, значит ваш X-сервер прослушивает. Если это невозможно, то ни одно удаленное приложение X не будет работать, и вам необходимо включить удаленные TCP-соединения на вашем сервере.
Добавление к ответам выше. Я был в подобной ситуации, когда проводил тесты для Code2Pdf на travis. Я решил проблему с помощью xvfb-run. Цитирование из справочной страницы,
xvfb-run - это оболочка для команды Xvfb(1x), которая упрощает задачу выполнения команд (обычно X-клиент или сценарий, содержащий список клиентов, которые должны быть запущены) в среде виртуального X-сервера.
Сценарий, который я написал, был:
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.
Запуск вышеуказанного скрипта помог мне. Вы можете увидеть неудачную сборку и проходящую сборку.
Надеюсь, поможет