mono / mono.posix

POSIX/Unix interface for Mono, .NET and .NET Core. Provides functionality for managed code to access POSIX/Unix features not accessible via the BCL. This repository supersedes the older code in https://github.com/mono/mono
MIT License
42 stars 10 forks source link

Is AOT supported? #37

Open kjpgit opened 1 year ago

kjpgit commented 1 year ago

I did dotnet publish with C# AOT, got no warnings. PublishAot=True in csproj.

At runtime, when I call execve():

Unhandled Exception: System.TypeInitializationException: A type initializer threw an exception. To determine which type, inspect the InnerException's StackTrace property. ---> System.DllNotFoundException: Unable to load shared library 'MonoPosixHelper' or one of its dependencies. In o rder to help diagnose loading problems, consider using a tool like strace. If you're using glibc, consider setting the LD_DEBUG environment variable:
MonoPosixHelper.so: cannot open shared object file: No such file or directory libMonoPosixHelper.so: cannot open shared object file: No such file or directory MonoPosixHelper: cannot open shared object file: No such file or directory libMonoPosixHelper: cannot open shared object file: No such file or directory

jonpryor commented 1 year ago

I think this is less a problem with AOT, and more a problem with dotnet publish integration/support: libMonoPosixHelper.so is a native library, and thus outside the confines of AOT, but it does need to be separately packaged with your application and present in a directory that dlopen() will search for, whether that be some system-wide location or by having environment variables such as LD_LIBRARY_PATH include the directory that contains libMonoPosixHelper.so.