我尝试在 Windows 10 (mingw64) 中安装一个软件包并收到此错误:
IEUser@MSEDGEWIN10 MINGW64 /c/Users/IEUser/PycharmProjects/myapp_msi-msys/myapp_msi
$ pip install -e git+https://source.example.lan:40443/repos/myapp_common#egg=myapp_common
Obtaining myapp_common from git+https://source.example.lan:40443/repos/myapp_common#egg=myapp_common
Cloning https://source.example.lan:40443/repos/myapp_common to c:/users/ieuser/pycharmprojects/myapp_msi-msys/myapp_msi/src/myapp-common
Username for 'https://source.example.lan:40443':
Password for 'https://tguettler@source.example.lan:40443':
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:/msys64/mingw64/lib/python2.7/site-packages/setuptools/__init__.py", line 191, in <module>
monkey.patch_all()
File "C:/msys64/mingw64/lib/python2.7/site-packages/setuptools/monkey.py", line 101, in patch_all
patch_for_msvc_specialized_compiler()
File "C:/msys64/mingw64/lib/python2.7/site-packages/setuptools/monkey.py", line 164, in patch_for_msvc_specialized_compiler
patch_func(*msvc9('find_vcvarsall'))
File "C:/msys64/mingw64/lib/python2.7/site-packages/setuptools/monkey.py", line 151, in patch_params
mod = import_module(mod_name)
File "C:/msys64/mingw64/lib/python2.7/importlib/__init__.py", line 37, in …
Run Code Online (Sandbox Code Playgroud) 根据https://github.com/mintty/mintty/issues/944自 mintty 3.5.1 以来,应该有一个选项卡栏,您可以在其中使用终端并行打开多个选项卡。出于这个原因,我安装了 MSYS2,其中包括 mintty 3.5.1,因为这似乎是使用 mintty 的方式。(我通过使用 -V 调用 mintty 验证了这一点。)
但是,我发现无法在用户界面中打开和/或管理选项卡。
我的要求:我非常希望有用于并行组织终端的选项卡。
我的问题:这是怎么回事?我错过了什么?我需要使用一些特殊的命令行选项来执行 mintty/MSYS2 吗?如何启用选项卡?
我在MacOS中使用brew安装了clang 15.0.7,并在Windows 10中使用MSYS2安装了相同版本。
当我编译以下程序时:
#include <filesystem>
int main()
{
std::filesystem::path p("/some/path");
std::string s(p);
}
Run Code Online (Sandbox Code Playgroud)
使用clang++ -std=c++20 test.cpp
我在 MacOS 上没有得到编译错误,但在 Windows 中它给出:
test.cpp:6:15 error: no matching constructor for initialization of 'std::string' (aka 'basic_string<char>')
std::string s(p);
^ ~
[more errors]
Run Code Online (Sandbox Code Playgroud)
到底是怎么回事?
I have a set of programs that compile fine on Ubuntu and I'm working on a setup to compile on Windows as well. I'm using MSYS2.
There is a main Makefile which looks like this:
#### Project main directory
DIR_MAIN=$(shell pwd)
#### Compile all
all:
@$(MAKE) -C src/Misc DIR_MAIN=$(DIR_MAIN)
@$(MAKE) -C src/CF_states DIR_MAIN=$(DIR_MAIN)
Run Code Online (Sandbox Code Playgroud)
etcetera. In src/
there are folders each who contain a specific Makefile for that project. They have the following structure:
#### Directories and flags
ifndef $(DIR_MAIN)
DIR_MAIN=../.. …
Run Code Online (Sandbox Code Playgroud) $ make
g++ main.cpp -I/mingw/include -L/mingw/lib -w -Wall -lSDL2main -lSDL2 -o test
/usr/lib/../lib/libmsys-2.0.a(libcmain.o): In function `main':
/msys_scripts/msys2-runtime/src/msys2-runtime/winsup/cygwin/lib/libcmain.c:37: undefined reference to `WinMain'
/msys_scripts/msys2-runtime/src/msys2-runtime/winsup/cygwin/lib/libcmain.c:37:(.text.startup+0x94): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `WinMain'
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
Mingw 教程和我的教程之间的区别是 '-lmingw32' 选项。
但是 MSYS2 中没有“mingw32”文件。
如何解决?
我用 gcc-6.3.0 和 gcc-gnat-6.3.0 在 Windows 上的 MinGW64 (MSYS2) 中编译了一个 Linux 软件。我想组装一个安装程序包或 zip 文件,其中包含所有必需的文件。目标机器需要 MinGW 的哪些部分?
我不想发送完整的 MSYS2/MinGW64,因为它有 3 GiB!可执行文件只有 10 MiB。
我也不会要求用户安装MSYS2和MinGW64,因为在Windows机器上安装它是一场噩梦。包管理器(pacman)对普通用户来说不友好/不可用。
编辑1:
通常,MinGW64 不在我的路径中。我有一个脚本来根据所选的 MinGW 版本 32 与 64 添加它。用于编译程序的 GCC 来自 mingw32 或 mingw64 目录。
我将二进制文件复制到一个单独的目录:C:\Tools\GHDL\0.34dev-mingw64-llvm\bin
我曾经ldd.exe
检查可执行文件:
C:\msys64\usr\bin\ldd.exe C:\Tools\GHDL\0.34dev-mingw64-llvm\bin\ghdl.exe
ntdll.dll => /c/Windows/SYSTEM32/ntdll.dll (0x77020000)
kernel32.dll => /c/Windows/system32/kernel32.dll (0x76f00000)
KERNELBASE.dll => /c/Windows/system32/KERNELBASE.dll (0x7fefcf20000)
ADVAPI32.dll => /c/Windows/system32/ADVAPI32.dll (0x7fefd6a0000)
msvcrt.dll => /c/Windows/system32/msvcrt.dll (0x7fefd130000)
sechost.dll => /c/Windows/SYSTEM32/sechost.dll (0x7feff310000)
RPCRT4.dll => /c/Windows/system32/RPCRT4.dll (0x7fefe450000)
SHELL32.dll => /c/Windows/system32/SHELL32.dll (0x7fefe580000)
SHLWAPI.dll => /c/Windows/system32/SHLWAPI.dll …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的笔记本电脑上玩几个 OpenGL。作为最快的方法,我安装了 MSYS2。我安装了mingw-w64-x86_64-gcc
,mingw-w64-x86_64-glew
等等mingw-w64-x86_64-glfw3
。我想我安装了所有必需的软件包。当我调用 OpenGL 例程时,我的程序就会出现分段错误。
为了制作一个最小的工作示例,我Hello, Triangle
从LearnOpenGL.com复制示例,以便保持较小的规模。我在这个程序中也遇到了同样的问题。
#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include <iostream>
void processInput(GLFWwindow *window);
// settings
const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 600;
const char *vertexShaderSource = "#version 330 core\n"
"layout (location = 0) in vec3 aPos;\n"
"void main()\n"
"{\n"
" gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0);\n"
"}\0";
const char *fragmentShaderSource = "#version 330 core\n"
"out vec4 FragColor;\n"
"void main()\n"
"{\n"
" FragColor …
Run Code Online (Sandbox Code Playgroud) 我正在尝试为 msys2 构建 heimdal 包。令我沮丧的是,在链接第一个组成库 roken 的过程中,DLL 无法构建,这导致了进一步的连锁反应。
我收到的唯一消息是:
libtool:x86_64-pc-msys 共享中不允许未定义的符号...仅构建静态
但是,没有提供有关哪些符号未定义的信息。我怎样才能找到它?
如果我打开命令的输出,make V=1
我会得到从大量 .lo 文件链接的 libtool 命令。如果我尝试运行gcc
它们(从那里复制命令),它不会将它们识别为任何东西。
我正在尝试遵循heimdal 的 msys2 包构建脚本中概述的说明。
之前使用 MSYS2 和 Visual Studio 2015 x64 工具链下载并编译 ffmpeg 4.2.2 到静态库。我想添加 VLC/VideoLan 中的 x264 编解码器,并将其编译为静态库。但是,运行 ffmpeg 配置会产生错误,提示“libx264 未找到”。
我在“/c/ThirdParty/opt/ffmpeg-4.2.2”处构建了没有VideoLAN x264的ffmpeg,并使用“make install”安装到“/c/ThirdParty/opt/ffmpeg-4.2.2/ffmpeg_build”。
我使用以下步骤从源 x264 进行编译,并使用相同的 VS2015 工具链将其添加到 ffmpeg 构建中:
PKG_CONFIG_PATH=/c/ThirdParty/opt/ffmpeg-4.2.2/ffmpeg_build/lib \ ./configure --prefix=./ffmpeg_build --toolchain=msvc --arch=x86_64 \ --target-os=win64 --extra -cflags=-MT --extra-cxxflags=-MT \ --extra-ldflags=-L/c/ThirdParty/opt/ffmpeg-4.2.2/ffmpeg_build/lib \ --enable-x86asm --enable-asm - -enable-static --disable-shared \ --disable-debug --enable-gpl --enable-avresample --enable-libx264 …
我想知道在MSYS2中是否有办法指定基本的MinGW/MinGW64目录?
在MSYS(即MSYS-1)中,在安装MSYS之后,它知道目录结构是,例如,/c/mingw/msys/...
如果您使用安装mingw包mingw-get
,则安装的二进制文件将转到/c/mingw/bin
.我想这可能是因为/mingw
默认情况下有mount /etc/fsab
.
现在,当我在MSYS2/MinGW64下使用MSYS2进行类似的操作时/c/mingw/msys64
,二进制文件不再安装/c/mingw/bin
了.例如,如果我clang
按如下方式安装:
pacman -S mingw-w64-x86_64-clang
Run Code Online (Sandbox Code Playgroud)
二进制文件安装到:
/c/mingw/msys64/mingw64/bin/clang.exe
Run Code Online (Sandbox Code Playgroud)
好像MSYS2
在自己内部创建了另一个mingw64安装(使用bin/lib/etc/share ...).这使MinGW64感到困惑,因为它报告说无法找到clang.我知道我可以添加另一条路径,但在根目录下安装一个MinGW,在MSYS2的子文件夹中安装另一个路径则相当奇怪.我怀疑这可能导致未来工具链的不一致.
我的问题是,有没有办法让MSYS2
MinGW包安装到MinGW目录树中MSYS
?
谢谢
在 MSYS2 shell 中测试使用 mingw 编译的 C 程序时,我遇到了一个问题:我编写了一个命令行解析器,它根据 Windows 约定(以 开头/
)接受选项。如果我这样调用我的程序来生成一个输出文件:
./example.exe /o test
Run Code Online (Sandbox Code Playgroud)
最终的结果argv[1]
实际上是O:/
. 从运行的控制台窗口进行测试时,它工作正常CMD.EXE
。这个真正最小的程序演示了以下行为:
#include <stdio.h>
int main(int argc, char **argv)
{
if (argc > 1)
{
puts(argv[1]);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
./example.exe /o test
Run Code Online (Sandbox Code Playgroud)
所以我想这是 MSYS2 shell 试图提供帮助并将看起来像根目录下的单字母路径的东西替换为驱动器号语法。有没有办法禁用这种行为?总是启动CMD.EXE
进行测试有点麻烦。
使用下面的 MCVE,当我classes_test.cc
使用以下命令编译源代码时
$ c++ --version\nc++.exe (Rev3, Built by MSYS2 project) 10.2.0\n$ c++.exe -Wall -Wunused -Wuninitialized -g -o classes_test classes_test.cc -std=c++17\n
Run Code Online (Sandbox Code Playgroud)\n在 Windows 10 + Msys2 下(没有选项-std=c++17
我得到相同的结果),我得到了预期的结果
$ ./classes_test.exe\nUsing GNU G: True\nPrototype of BaseClass::get_bc() is int (BaseClass::*)()\n
Run Code Online (Sandbox Code Playgroud)\n当我在 Ubuntu 下的 g++ 中尝试相同的操作时,出现编译错误
\n$ c++ --version\nc++ (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0\n$ c++ -Wall -Wunused -Wuninitialized -g -o classes_test classes_test.cc -std=c++17\nclasses_test.cc: In function \xe2\x80\x98int main()\xe2\x80\x99:\nclasses_test.cc:63:83: error: invalid use of non-static member function \xe2\x80\x98int BaseClass::get_bc()\xe2\x80\x99\n 63 | …
Run Code Online (Sandbox Code Playgroud) 我在 MSYS 2 下运行 autogen.sh 脚本。
到目前为止,我安装了所有请求的软件包,但是
checking for glib-gettext >= 2.2.0...
testing glib-gettextize... not found.
Run Code Online (Sandbox Code Playgroud)
我不明白。
命名的包glib-getext
不存在。
我跑:
pacman -S glib2
Run Code Online (Sandbox Code Playgroud)
但没有成功。
我也运行:
$ pacman -S gettext
Run Code Online (Sandbox Code Playgroud)
希望能解决我的问题,但事实并非如此。
我该怎么办glib-gettext
?