ld throws libc_nonshared.a: No such file or directory when run inside snap environment

Bug #2026734 reported by Mert Kirpici
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Snapcraft
New
Undecided
Unassigned

Bug Description

I was trying to snap an application which has a feature to create a virtual environments and I was facing an error trying to compile the netifaces module during the venv creation.

I traced that problem further and found that, during the configuration phase, the netifaces package tries to compile small programs[0] to discover the capabilities of the environment it is running in. Which was seemingly not working properly.

When I tried to compile the program manually, I discovered the error:
/snap/demo/x1/usr/bin/ld: cannot find /usr/lib/x86_64-linux-gnu/libc_nonshared.a: No such file or directory
collect2: error: ld returned 1 exit status

I tried to use the GCC_EXEC_PATH and LIBRARY_PATH but couldn't manage to get it work.
The workaround I found was to use:
```
layout:
  /usr/lib/$SNAPCRAFT_ARCH_TRIPLET/libc_nonshared.a:
    bind-file: $SNAP/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/libc_nonshared.a
```
in the snapcraft.yaml.

I am attaching the snapcraft yaml that reproduces the issue, I am testing using snapcraft v7.4.3.

Reproducing steps:

sudo snap install ./demo_0.1_amd64.snap --dangerous
snap run --shell demo.demo
gcc $SNAP/test.c

[0] https://github.com/al45tair/netifaces/blob/release_0_11_0/setup.py#L139

Revision history for this message
Mert Kirpici (mertkirpici) wrote :
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.