如果没有Docker容器,可以直接使用SSH X11转发(ssh -X)在远程服务器上运行X11程序.当应用程序在服务器上的Docker容器内运行时,我试图让同样的东西工作.当使用-X选项SSH连接到服务器时,会设置X11隧道,并且环境变量"$ DISPLAY"会自动设置为"localhost:10.0"或类似内容.如果我只是尝试在Docker中运行X应用程序,我会收到此错误:
Error: GDK_BACKEND does not match available displays
Run Code Online (Sandbox Code Playgroud)
我的第一个想法是实际将$ DISPLAY传递给容器,其中包含"-e"选项,如下所示:
docker run -ti -e DISPLAY=$DISPLAY name_of_docker_image
Run Code Online (Sandbox Code Playgroud)
这有帮助,但它没有解决问题.错误消息更改为:
Unable to init server: Broadway display type not supported: localhost:10.0
Error: cannot open display: localhost:10.0
Run Code Online (Sandbox Code Playgroud)
在搜索网络后,我发现我可以做一些xauth魔术来修复身份验证.我添加了以下内容:
SOCK=/tmp/.X11-unix
XAUTH=/tmp/.docker.xauth
xauth nlist $DISPLAY | sed -e 's/^..../ffff/' | xauth -f $XAUTH nmerge -
chmod 777 $XAUTH
docker run -ti -e DISPLAY=$DISPLAY -v $XSOCK:$XSOCK -v $XAUTH:$XAUTH \
-e XAUTHORITY=$XAUTH name_of_docker_image
Run Code Online (Sandbox Code Playgroud)
但是,这仅在将" --net host " 添加到docker命令时才有效:
docker run …Run Code Online (Sandbox Code Playgroud) 我计划实现SIMD扩展的运行时检测.如果我发现处理器具有AVX2支持,它是否也保证有SSE4.2和AVX支持?
为了更好地理解 Android 应用程序开发工具的工作原理,我开始使用纯 GNU Makefile 来创建完全独立于ant或gradle的 APK 。我从这个 Makefile 中调用低级工具(管道工命令),例如aapt、javac、jarsigner、zipalign、dalvik-exchange、aidl。(我参考https://spin.atomicobject.com/2011/08/22/building-android-application-bundles-apks-by-hand/了解一些背景知识)对于小型且简单的应用程序项目,这现在可以工作很好,但我对一些更复杂的应用程序有一些问题。
在这种特殊情况下,有一个 Android 应用程序,其中包含一个单独的库项目,其中包含代码和资源。当我使用aapt为库项目生成 R.java 文件时,结果如下:
/* AUTO-GENERATED FILE. DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found. It
* should not be modified by hand.
*/
package com.mycompany.myapp.mylibrary;
public final class R {
public static final class attr …Run Code Online (Sandbox Code Playgroud) 64位CPU(amd64)在兼容模式下支持32位Intel指令.此外,如果ELF头表示它是32位可执行文件,64位Linux安装允许运行包含32位指令的ELF.
我想知道是否可以在ELF中放置一些汇编指令,在程序中间将CPU切换到32位兼容模式(然后再返回)?如果内核不允许这些汇编指令,我们是否可以通过某种方式让内核将已经运行的进程切换到32位?
这主要是出于好奇心的问题,因为我无法真正看到任何用例.
通过查看内核源代码中的binfmt_elf.c,我无法弄清楚在生成32位进程与64位进程时内核(64位)的作用有何不同.
任何人都可以向我解释我错过了什么吗?
(这个问题与我关于在64位指令(链接)的同一过程中有32位指令的其他问题有关,但这可以作为一个单独的问题.)