Articles of 单声道

Linux,单声道,共享库和未解决的符号

我有一个调用另一个共享库(libexif)中的函数的Shim库(共享,C ++),并提供了一个简单的接口,以C#平台调用调用。 (也就是说,C#程序使用PInvoke来调用我的自定义共享库,然后调用另一个共享库。) 在Windows中,当自定义库链接并执行C#应用程序时,我的自定义共享库链接到共享库,所有符号都已parsing。 在Linux上,链接我的共享库不会链接其他共享库。 使用C ++驱动程序时,我指定应用程序链接时的其他库,并在那个时候解决所有符号。 但是,当我尝试从另一个共享库中的C#程序(使用单声道编译)符号调用我的共享库时,则无法parsing。 我试过使用MONO_PATHvariables来指定其他库,但它似乎没有区别。 我也尝试在DLLimport语句中指定未parsing的函数,但似乎没有帮助。 如何指定一个不直接由C#代码调用的共享库,以便mono / cli在运行时find它? 我使用以下命令来构build共享库: g++ -fPIC -g -c -Wall libexif-wrapper.cpp g++ -shared -Wl,-soname,libexif-wrapper.so.1 -o libexif-wrapper.so.1.0.1 libexif-wrapper.o -lc ar rcs libexif-wrapper.a libexif-wrapper.so.1 和下面的命令行来编译我的C#驱动程序: mcs -unsafe -define:LINUX Test-libexif-wrapper.cs 在执行时,我得到一个错误,我的共享库使用的符号没有find: /usr/bin/cli: symbol lookup error: ../../../C/libexif-wrapper/libexif-wrapper/libexif-wrapper.so.1: undefined symbol: exif_data_new_from_file (libexif-wrapper是我的共享库,它用作C#应用程序和libexif之间的一个垫片。) 我一直无法弄清楚如何解决这个问题。 任何build议,将不胜感激。 编辑:要回答这个问题: 你确定可以在LD_LIBRARY_PATH环境variables中find非托pipe的libexif-wrapper吗? 事实上并非如此。 我已经制作了DLLImport中的path,直接指向它。 运行时find它,因为它在上面的错误消息中报告它的path。 此外,缺less的符号不是由C#程序调用的,而是我的共享库中的一个函数调用的函数,然后找不到。 (谢谢 […]

在mono / Linux下从命名pipe道读/写

我想从Linux下的命名pipe道/ FIFo队列中读/写。 我已经尝试了System.IO中的标准类StreamWriter和其他类,但是因为使用了seek而失败了。 有没有人使用Mono写入/读取命名pipe道? 我正在努力阅读和写作 – 但不是同一时间…

在Mono中运行的C#应用​​程序中更改当前的Linux用户?

我正在为Linux系统开发一个库(CLI程序集)。 我想为库的用户提供一种切换当前有效的用户和组的方法。 主要原因是提供访问控制(某些用户只允许某些操作),其次是以特定的用户来修改文件系统。 我已经确定了两种可能的方法: 1.以root用户身份启动Mono,并调用像seteuid等libc例程 通过设置/ usr / bin / mono的位来实现这一点,然后从我的库中(即在Mono运行时启动之后)设置有效的用户,会在Mono终止时导致崩溃: ERROR:handles.c:1940:_wapi_handle_update_refs: assertion failed: (thr_ret == 0) Native stacktrace: mono2 [0x8bb6c] /lib/libc.so.6(__default_rt_sa_restorer_v2+0) [0x4020a5a0] /lib/libc.so.6(gsignal+0x40) [0x4020920c] 从逻辑上讲,我知道在更换Mono的有效用户方面可能存在问题,因为它正在pipe理大量资源,并且可能会导致问题发生。 2.在本地守护进程中处理身份validation,不要更改单声道有效用户 我不确定是否有任何现成的解决scheme,但在概念上,我想有一个守护进程作为根运行,库将通信(例如通过POSIX消息队列)来执行身份validation。 守护程序以root用户身份运行,以便能够读取/ etc / shadow。 Mono的有效用户不会改变,但是我的图书馆会跟踪哪个“等效用户”进程正在运行。 不幸的是,这种方法不允许库作为不同的用户访问文件系统。 题 我坚持第二个选项,还是有一些方法来真正改变一个单声道进程的有效用户? 谢谢!

哪个Linux发行版最适合在虚拟机中开发Mono应用程序?

我一直是Windows用户,现在我需要Linux来使用Mono创build一个应用程序。 哪种Linux发行版最适合我? 我将在虚拟机中使用它。

在Ubuntu的单声道和非托pipe代码

我使用在Ubuntu 12 x64上运行的Mono 2.10。 现在我需要知道如何使用非托pipe代码。 [DllImport("libc.so")] public static extern int getpid (); 而且,在下一步我有: getpid(); 我收到这个错误 $ MONO_LOG_LEVEL="debug" MONO_LOG_MASK="dll" mono libc_test.exe Mono: DllImport attempting to load: 'libc.so'. Mono: DllImport loading library: '/home/ibaranov/Documents/MONO/libc_test/libc_test/bin/Debug/libc.so'. Mono: DllImport error loading library '/home/ibaranov/Documents/MONO/libc_test/libc_test/bin/Debug/libc.so: cannot open shared object file: No such file or directory'. Mono: DllImport loading library: '/home/ibaranov/Documents/MONO/libc_test/libc_test/bin/Debug/libc.so'. Mono: DllImport error […]

如何为Debian / Ubuntu打包Mono应用程序

Debian / Ubuntu的Mono应用程序是否有任何指导原则或工具? 就像在应用程序中附带的组件一样

当客户端丢失连接时,SignalR Owin Linux / Mono SocketException上的自主机

我正在运行非常简单的信号服务器自主通过欧文在Ubuntu的服务器14.04,单声道3.2.8。 (代码如下)。 连接/断开连接在远程Windows服务器上以及将位部署到Linux服务器时均正常工作。 但是,当一个客户端意外死亡,而不是告诉信号员他断开连接,那就是当我只在linux服务器上得到一个永无止境的SocketException。 大约30秒左右之后,Windows服务器断开客户端连接,但是linux服务器每隔10秒左右就会发出一次socketexception(也在下面)。 当运行相同的代码时,如何让linux服务器像Windows服务器一样工作,在设置超时后断开用户连接,而不是抛出socketexceptions? 服务器代码: using System; using System.Threading.Tasks; using Microsoft.AspNet.SignalR; using Owin; namespace signalrtestserver { class Program { static void Main(string[] args) { var uri = System.Configuration.ConfigurationManager.AppSettings["startup_uri"] ?? "http://*:7890"; using (Microsoft.Owin.Hosting.WebApp.Start<Startup>(uri)) { Console.WriteLine(string.Format("Server started on {0}. Press enter to close.", uri)); Console.ReadLine(); } } } class Startup { static Hub hub; public […]

Linux:如何使一个守护进程/服务与xinetd一起使用?

任何人都知道服务器使用xinetd需要进行哪些更改? 服务器是在Linux上运行的.NET邮件服务器。 看到这篇文章的底部作为参考: Lumisoft邮件服务器论坛post 注意:xinetd,不是单一服务。 [x] inetd是一个互联网超级服务器。 超级服务器按需启动服务器服务。 (而不是服务器服务连续运行,这是单一服务)

在Linux上运行ASP.Net与标准的以微软为中心的解决scheme相比如何?

我知道可以使用Mono和Apache在Linux上开发和托pipe一个ASP.Net站点,但是我想知道它的工作效果如何,值得一提吗? 我更喜欢开源,但是对于这个项目我想要最快,最简单,最可靠的解决scheme。 我将build立的网站将是一个相当基本的使用MySQL的 ASP.Net网站。 我想知道是否有其他人在像我这样的情况下使用Mono的经验,以及项目是如何进行的。 它与使用以Microsoft为中心的解决scheme相比如何? 我知道单声道还不完整,但我希望我不需要它缺乏的function。 这个问题可能有点“极化”。 大多数类似的问题似乎都是来自非常亲或微软或亲Linux的人的回应。 我希望得到一些无偏见的回应,最好是有经验的人使用。

如何从Mono证书商店中删除/移除证书My和Trust?

我已经通过在Linux中使用以下命令将证书添加到Mono 3.2.8存储中。 certmgr -add -c -m My mycert.cer 新增的证书可以被查看 certmgr -list -c -m My mycert.cer 使用以下命令删除以前添加的证书。 但是证书没有被删除。 该命令没有给任何错误messgae。 certmgr -del -c -m My mycert.cer 如何从商店中删除证书(我的,CA,Trust等?) Mono将证书详细信息存储在系统中的哪里? 我试图通过使用命令mozroots添加证书,但默认情况下它试图将证书添加到商店AddressBook。 (我找不到任何命令从商店My或Trust中删除证书) mozroots –import –machine –sync certmgr -ssl -m https://test:1200/service