我有一台机器在Windows上使用Ubuntu上的Bash运行Windows 10。它使用某种没有适当硬链接支持的FUSE文件系统。
因此,这是典型的perl compilation fails。如果我想编译,我需要做:
echo "dont_use_nlink='define'" >> Policy.sh
./Configure -des
make
make install
我理想的是能够使用perlbrew
或plenv
管理我的perls并将dont_use_nlink
参数传递给我构建的任何perl。有没有办法做到这一点?
答案 0 :(得分:1)
我没有看过Windows 10或Windows的新bash shell,所以我不知道新的Windows bash环境与perlbrew或plenv的兼容性。
另一种方法是利用便携式Strawberry Perl的版本。不久前,David Farrell写了一个使用便携式Strawberry Perl在Windows上模仿perlbrew而不是从源代码编译Perl的莓果。他写了一篇关于它的blog post并将他的东西放在GitHub上(berrybrew)。后来,史蒂夫伯特兰想要添加更多功能,最终最终分配了该项目。你可以在他的blog post上阅读更多关于它的内容,他的分叉项目已经在GitHub上了解(见here)。
除非您需要/想要从源代码构建Perl版本,否则使用berrybrew可能会为您提供您正在寻找的功能。
答案 1 :(得分:1)
幸运的是,它看起来像underlying issue in Win10 WSL is fixed,并且很快就会发布。
正如MichielB指出的那样,-A或-D看起来应该是这样做的,但是从我的一些测试中可以看出,perl的Configure并不尊重#!/usr/bin/env python3
import pygame
import os
# --- constants ---
WIDTH = 1360
HEIGHT = 705
BLACK = (0, 0, 0)
WHITE = (250, 250, 250)
BULLET_SPEED = 5
# --- classes ---
#empty
# --- functions ---
#empty
# --- main ---
# - init -
os.environ['SDL_VIDEO_WINDOW_POS'] = '0, 25'
pygame.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT))
# - objects -
bullets = []
# center of screen as Vector2
#center = pygame.math.Vector2(WIDTH//2, HEIGHT//2)
center = pygame.math.Vector2(screen.get_rect().center)
# - mainloop -
clock = pygame.time.Clock()
while True:
screen.fill(BLACK)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
if event.type== pygame.MOUSEBUTTONDOWN:
if event.button == 1:
# get vector from center to mouse position
vector = event.pos - center
# `center` is `Vector2` so `vector` will be `Vector2` too
#print(type(vector))
# normalize
normal = vector.normalize()
# create speed vector
speed = normal * BULLET_SPEED
# move object (first move 5 times bigger then next moves )
pos = center + (speed * 5)
#pygame.draw.line(screen, (255,150,100), (pos.x, pos.y), (center.x, center.y))
pygame.draw.line(screen, (255,150,100), pos, center)
# remeber position and speed as one object
bullets.append( [pos, speed] )
# - draws -
for pos, speed in bullets:
# move
pos += speed
# draw
pygame.draw.rect(screen, WHITE, (pos.x, pos.y, 2, 2))
pygame.display.update()
# - speed -
clock.tick(60)
# - end -
当-A
也被传递时,或-D
个参数(请参阅"usage" in perl's metaconfig了解这些参数的重要性)。尽管在生成的config.sh的args列表中清楚地看到了正确形成的-A和-D标志,但dont_use_nlink永远不会被添加。
除非你使用special PERLBREW_CONFIGURE_FLAGS
environment variable,否则perlbrew会将这些作为默认值传递。
但是,有一种解决方法。您可以使用-de
使用PERLBREW_CONFIGURE_FLAGS
来传递我们自己的配置文件。我们可以使用由失败的" perlbrew安装生成的大多数正确的config.sh"运行,然后调整并传入。
步骤:
-f
perlbrew install perl-5.24.0
cp /home/USERNAME/perl5/perlbrew/build/perl-5.24.0/config.sh ~/config_dont_use_nlink.sh
。如果你整洁并按字母顺序归档,那么它将介于dlsrc和doubleinfbytes之间: dont_use_nlink='define'
dlsrc='dl_dlopen.xs'
dont_use_nlink='define'
doubleinfbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f'
在Win10 build 14393上为一个大多数干净的WSL编译,并且几乎所有测试都通过了(其余的看起来像已经提交的WSL错误的东西)。