标签: windows-subsystem-for-linux

Windows上的GCC - Windows上的Ubuntu上的Bash(WSL),CygWin,MinGW

我目前正在使用Windows 8.1,并且正在寻找安装GCC.我发现这样做的方法是通过MinGW和CygWin(最受欢迎).现在我想出了Windows的Windows子系统(WSL)和Windows 10中的Windows上提供的Bash.

问题1.是否可以通过Windows 10中的Bash安装GCC,并且它是否可以像在Linux发行版上那样工作.假设您有一个'helloworld.c'文件,如果我这样做,

>     gcc helloworld.c
$     ./a
Run Code Online (Sandbox Code Playgroud)

在bash中我会得到输出(假设'helloworld.c'的内容很简单 - 一个cout声明.)

问题2.如果可能,那么哪种方法更适合在Windows上使用GCC.也就是说,a)MinGW或CygWin b)Windows上的Linux上的Bash.因为根据我对所读内容的理解,CygWin和MinGW会对它们上面开发的程序产生一些依赖性.

问题3.如果您已经阅读了这篇文章,那么请填写我对CygWin和MinGW的理解上的空白.也就是说,如果我只将其用于编译和运行代码片段而不是应用程序开发,那么我使用哪些内容并不重要,我是对的吗?因为代码(用C或FORTRAN编写),无论系统如何都会编译和执行,我是对的吗?

语境.我是一名从事数值计算(计算流体动力学)的学生,我的主要工作是在FORTRAN开发和运行CFD代码.我想要做的是在我的笔记本电脑上运行计算代码(我们主要使用FORTRAN),它在Windows上运行.我目前不打算为Windows或Linux开发应用程序或软件.但我仍然想知道事情是如何运作的,哪个是最好的选择.请详细解释.谢谢.

bash gcc cygwin mingw windows-subsystem-for-linux

12
推荐指数
1
解决办法
8484
查看次数

windows 10 bash tcpdump:socket:参数无效

我正在使用windows 10 bash来使用tcpdump从教程中我发现听一个接口命令是:

tcpdump -i eth0 //eth0 is ethernet interface
tcpdump -i any // to listen to any interface
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,我得到tcpdump:socket:无效的参数错误.注意:

tcpdump -D
Run Code Online (Sandbox Code Playgroud)

不会在控制台上打印任何内容.

networking tcpdump network-tools windows-subsystem-for-linux

12
推荐指数
1
解决办法
1万
查看次数

在WSL上运行Debian和Ubuntu上的git命令对于大型项目来说真的很慢

我们有一个非常大的项目,总共有近15000次提交.我9.3使用WSL在我的Windows机器上运行Debian .我的git版本是2.17.0.

当我运行诸如此类的命令时git status,至少需要20秒才能完成.即使没有做出任何改变.

我尝试了多个旧版本的git甚至尝试过Ubuntu,但我仍然遇到了相同的结果.我已尝试在这里和其他网站上运行来自各个帖子的一堆命令,但它们都没有奏效.

有趣的事情:当我cmd.exe在Windows上打开或Git Bash时,运行只需不到一秒钟git status.

可能是什么导致了这个?我该怎么做才能解决这个问题?

git git-bash windows-subsystem-for-linux

12
推荐指数
4
解决办法
4172
查看次数

Windows 子系统 linux 2 (wsl2) 下的 ubuntu 无法访问互联网

我在 wsl 1 下有一个 ubuntu 工作正常并连接到互联网

只是升级到 wsl2 ,我无法从 bash ping google.com

但如果我降级到 wsl1,我可以 ping

问题在这里:[WSL2] 没有网络 · 问题 #4731 · microsoft/WSL


我试过这个但没有用

第 1 步:以管理员身份打开 Hyper-V 管理器

在此处输入图片说明

步骤 2:从操作中选择 Virtual Switch Manager

在此处输入图片说明

第 3 步:选择 WLS

在此处输入图片说明

第 4 步:选择选择的外部网络和适配器连接到互联网

在此处输入图片说明


我的 windows ipconfig 以太网适配器 vEthernet (WSL):

Ethernet adapter vEthernet (WSL):

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::30a4:2612:6ee3:2390%142
   IPv4 Address. . . . . . . . . . . : 192.168.0.103 …
Run Code Online (Sandbox Code Playgroud)

hyper-v windows-subsystem-for-linux

12
推荐指数
3
解决办法
4万
查看次数

如何优雅地创建在X下启动WSL程序的Windows快捷方式

xfce4-terminal我在通过 Windows 任务栏上的按钮从 VcXsrv 下的 WSL 安装启动时遇到了一些困难。完成后,除了 xfce4-terminal 之外,我不需要任何 DOS 框/控制台/终端。我已经可以使用了,但是它太丑了。有人有更干净的方法吗?

\n

这是我所做的工作:我在桌面上使用此目标创建了一个 Windows 快捷方式(全部在一行中,为了便于阅读,用换行符分隔):

\n
C:\\Windows\\System32\\wscript.exe\n    \\\\wsl$\\Ubuntu-20.04\\home\\peter\\bin\\windows\\startTerminal.vbs\n
Run Code Online (Sandbox Code Playgroud)\n

startTerminal.vbs灵感来自10 Ways To Run Batch Files And Hide The Console Window \xe2\x80\xa2 Raymond.CC(少数不需要为此安装单独程序的解决方案之一!),它包含:

\n
CreateObject("Wscript.Shell").Run "C:\\Windows\\System32\\wsl.exe -u peter --exec /home/peter/bin/windows/startTerminal.sh",0,True\n
Run Code Online (Sandbox Code Playgroud)\n

startTerminal.sh包含:

\n
export DISPLAY=localhost:0.0\nxfce4-terminal --command=/bin/zsh\n
Run Code Online (Sandbox Code Playgroud)\n

尽管我在 ~/.zshrc 中设置了 DISPLAY 环境,但显然需要设置 DISPLAY。除非您运行登录 shell,否则 wsl.exe 显然不会执行此操作。

\n

一旦所有这些都正常工作,我可以将快捷方式拖到任务栏并单击那里。

\n

我数数3,三个文件合作来实现这个简单的目标?我可以在不安装外部程序的情况下将其限制为一两个吗?

\n

windows x11 windows-subsystem-for-linux

12
推荐指数
2
解决办法
2万
查看次数

WSL2 - Linux 相对符号链接在仅针对 \\wsl$\ 挂载点从 Windows 访问时损坏

问题

我真的很挣扎相对符号链接WSL2它们在Linux的本地文件系统创建的,我想,当通过共享点访问文件\\wsl$\distro-name\whatever-他们只是打破。

环境

我已经wsl2在我的 Windows10 中激活了。我有一个Ubuntu-20.04

WSL2 中的 Ubuntu

对我的编码工作流程的影响

损坏的符号链接禁止我在“从 Windows 中的 IDE 编辑”时无缝地“在 wsl2 中执行”。

实际用例(但不限于):开发两个集成项目:一个带有应用程序的 repo 和另一个与库一起存在的 repo。该应用程序符号链接库:

  • 主程序在 /files/repos/my-nice-app
  • 图书馆也在 /files/repos/my-nice-lib
  • my-nice-app/libs/my-nice-lib 是一个符号链接 ../../my-nice-lib
  • windows中的智能IDE,在应用程序打开时进行操作 \\wsl$\Ubuntu-20.04\files\repos\my-nice-app

通过此设置,该位置\\wsl$\Ubuntu-20.04\files\repos\my-nice-app\libs\my-nice-lib应映射到\\wsl$\Ubuntu-20.04\files\repos\my-nice-lib

但它不起作用。IDE 中的所有代码完成都搞砸了,因为符号链接没有很好地解映射并且 IDE 无法读取库的类和定义。

如何重现工作示例

工作示例。第 1 步 - 准备

每当我在 NTFS 文件系统中从 linux 创建符号链接时,它都会在 windows 中正确解码

反面相同:如果我从 windows(使用 CMD 和mklink或 Powershell 使用New-Item创建链接,它们会 …

linux windows symlink windows-subsystem-for-linux wsl-2

12
推荐指数
0
解决办法
2245
查看次数

使用 WLS2 在 Docker 桌面上启用入口控制器

目前,我正在使用 Docker 桌面与WSL2集成。我发现Docker Desktop自动为我创建了一个集群。这意味着我不必安装和使用MinikubeKind来创建集群。问题是,如果我使用 Docker 桌面的“内置”集群,我如何启用Ingress Controller?我尝试创建一个Ingress来检查这是否有效,但正如我的猜测,它没有用。

我创建的 YAML 文件如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: webapp
spec:
  minReadySeconds: 30
  selector:
    matchLabels:
      app: webapp
  replicas: 1
  template:
    metadata:
      labels:
        app: webapp
    spec:
      containers:
      - name: webapp
        image: nodejs-helloworld:v1

--- 

apiVersion: v1
kind: Service
metadata:
  name: webapp-service

spec:
  selector: 
    app: webapp
  
  ports:
    - name: http
      port: 3000
      nodePort: 30090 # only for NotPort > 30,000
    
  type: NodePort #ClusterIP inside …
Run Code Online (Sandbox Code Playgroud)

docker kubernetes windows-subsystem-for-linux wsl-2

12
推荐指数
3
解决办法
9239
查看次数

Windows 版 WSL2 和 Docker Desktop 的网络问题

长话短说

\n

在使用 WSL2 和 Windows 版 Docker Desktop 时,我似乎不断遇到网络问题。

\n

通常,我可以通过查找 WSL2 实例的 IP 地址并从容器内部引用该 IP 地址,从 Docker 容器内部访问从 WSL2 实例(WSL2 所说的“分发”)启动的端口。但今天由于某种原因这不起作用了。当遇到 WSL2+DockerDesktop 问题时,我已经习惯了重新启动,但现在我想最终了解到底出了什么问题。

\n

我非常确定,当我稍后重新启动时,一切都会好起来的。

\n

您知道如何调试这个东西吗?

\n

我还有一个公司 Forticlient VPN,可能会搞砸。但在这件事上我别无选择......;-(

\n

细节

\n

我找到了IP:

\n
WSL2:\xc2\xbb ip -br a\nlo               UNKNOWN        127.0.0.1/8 ::1/128 \nbond0            DOWN           \ndummy0           DOWN           \nsit0@NONE        DOWN           \neth0             UP             172.26.183.209/20 fe80::215:5dff:fef9:cc5c/64 \n
Run Code Online (Sandbox Code Playgroud)\n

所以 WSL2 机器的 IP 地址是172.26.183.209

\n

现在,我有一个 Web 服务器在 WSL2 进程中侦听端口 8080,可以通过http://172.26.183.209:8080访问它,正如 WSL2 所确认nmapcurl

\n …

networking docker windows-subsystem-for-linux docker-desktop wsl-2

12
推荐指数
2
解决办法
2万
查看次数

Ubuntu 错误“在此 WSL 2 发行版中找不到命令‘docker’。”

我在 Ubuntu 上运行 WSL 2,在计算机上启动和运行 docker 时遇到一些问题。我安装了 Docker Desktop 并在后台运行,并且还启用了与 Ubuntu 的 WSL 集成。

当我尝试运行简单的 docker 命令(例如 )时docker --version,我收到此错误:

在此 WSL 2 发行版中找不到命令“docker”。我们建议在 Docker Desktop 设置中激活 WSL 集成。

有关将 Docker Desktop 与 WSL 2 结合使用的详细信息,请访问:

https://docs.docker.com/go/wsl2/

我已经访问了该链接并按照它提供的所有说明进行操作,启用了 WSL 与 Ubuntu 的集成,如下所示:

Docker 桌面设置屏幕截图

但是我收到的错误仍然是相同的。有谁知道如何解决这一问题?

注意:我可以在 PowerShell 和命令提示符中运行 Docker 命令(例如docker --version),但在 Ubuntu 中无法识别。

ubuntu docker docker-compose windows-subsystem-for-linux wsl-2

12
推荐指数
3
解决办法
1万
查看次数

golang mkdir /usr/local/go/pkg/mod 权限被拒绝

操作系统:Windows 11 WSL2;IDE:Goland 最新

我正在尝试打开 IDE Goland,但当 IDE 尝试为我的项目建立索引时出现此错误。

warning: GOPATH set to GOROOT (/usr/local/go) has no effect
go: mkdir /usr/local/go/pkg/mod: permission denied
go: github.com/MyCompany/common-backend@v1.0.56: mkdir /usr/local/go/pkg/mod: permission denied
Run Code Online (Sandbox Code Playgroud)

不过,我已经这样安排了

 export GOROOT=/usr/local/go
 export GOPATH=$HOME/go
 export PATH=$PATH:/usr/local/go/bin
Run Code Online (Sandbox Code Playgroud)

这是我对 WSL for Go Path 怀念的东西吗?

linux go windows-subsystem-for-linux goland wsl-2

12
推荐指数
1
解决办法
8765
查看次数