T h e B l a c k M a g i c
- f
P y t h
- n
Wh e e l s
E l a n a H a s h ma n P y t h
- n
P a c k a g i n g A u t h
- r
i t y P y C
- n
T h e B l a c k M a g i c o f P y t h o n Wh e - - PowerPoint PPT Presentation
T h e B l a c k M a g i c o f P y t h o n Wh e e l s E l a n a H a s h ma n P y t h o n P a c k a g i n g A u t h o r i t y P y C o n U S 2 0 1 9 C l e v e l a n d
P
E
D
A
A
A
Wh
H
– Wh
H
O
N
A
F
D
P
– O
– M
U
– P
P
– O
– M
U
– P
E
– ?
I
C
– L
– C
– C
Wh
N
E
E
– I
... Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flags Align INTERP 0x0000000000000238 0x0000000000000238 0x0000000000000238 0x000000000000001c 0x000000000000001c R 0x1 [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
hello.c #include<stdio.h> ... puts("hello world"); a.out .rela.plt Symbol Name puts@GLIBC_2.2.5 .gnu.version_r File Symbol Version libc.so.6 GLIBC_2.2.5 libc.so.6 .gnu.version_d Symbol Versions Available: GLIBC_2.2.5 GLIBC_2.2.6 GLIBC_2.3 ... GLIBC_2.27 .dynsym Type Name FUNC puts@GLIBC_2.2.5
O
O
E
E
T
O
– O
– C
N
– B
T
– S
– V
– R
P
– D
– Wh
P
– “
manylinux
– manylinux1
– manylinux2010
auditwheel
auditwheel
E
– J
– auditwheel repair
A d d y
r c
e , d e p e n d e n c i e s t
h e manylinux D
k e r i ma g e a n d b u i l d a g a i n s t y
r s u p p
t e d P y t h
v e r s i
s / a r c h i t e c t u r e s
R e p a i r a n d i n s p e c t t h e b u i l t w h e e l w i t h auditwheel f
c
l i a n c e
U p l
d t
y P I !
H
– F
p
– S
– F
g
– S
I
T
T
H