blob: 797592d0f6aa5bd376a1b0ef9c24a289851e9357 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
LC_RPATH stripped despite setting INSTALL_REMOVE_ENVIRONMENT_RPATH=FALSE
Description of problem:
When I try to run qemu, I get the following output:
> dyld[93165]: Library not loaded: @rpath/libjpeg.62.dylib
> Referenced from: <85BC1FBA-CA2E-3CAC-9ABF-E5330AC86CAF> /Users/mj/local/bin/qemu-system-aarch64
> Reason: no LC_RPATH's found
Steps to reproduce:
If the qemu-9.0.2 folder is present, remove it:
```
$ rm -rf qemu-9.0.2
```
Create the source folder:
```
$ tar xzf qemu-9.0.2.tar.xz
$ cd qemu-9.0.2
```
Make sure the following environment variables are set:
```
$ export CC=clang
$ export LDFLAGS="-rpath $HOME/local/lib"
$ export INSTALL_REMOVE_ENVIRONMENT_RPATH=FALSE
```
Configure as follows:
```
$ ./configure --prefix=$HOME/local --disable-sdl --enable-slirp --enable-fdt=internal --enable-spice
```
Build
```
$ make -j 10
```
Note there are a large number of linker warnings like this:
> ld: warning: duplicate -rpath '/Users/mj/local/lib' ignored
Execute this:
```
$ otool -l build/qemu-system-aarch64 | grep LC_RPATH -A2
```
See this output
> cmd LC_RPATH
> cmdsize 32
> path /Users/mj/local/lib (offset 12)
Change directory to $HOME/local/bin & execute:
```
$ otool -l qemu-system-aarch64 | grep LC_RPATH -A2
```
The output is now empty - the LC_RPATH has been stripped by the install. This results in the failure to execute the resulting binary. Note, I tried using install_name_tool to add the RPATH, but it warned me this changed the signature of the file, and it would not run.
Executing qemu-system-aarch64 produces the following:
> dyld[93165]: Library not loaded: @rpath/libjpeg.62.dylib
> Referenced from: <85BC1FBA-CA2E-3CAC-9ABF-E5330AC86CAF> /Users/mj/local/bin/qemu-system-aarch64
> Reason: no LC_RPATH's found
|