- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在构建一个 .a
来自 C++ 代码。它仅取决于标准库( libc++
/libstdc++
)。从一般阅读来看,二进制文件的可移植性似乎取决于
gcc
,ABI 链接到主版本号。libc++
/libstdc++
版本(因为它们可以将 vector<T>
传递到 .a 中,并且其表示形式可能会改变)。 即有人使用 .a
需要使用相同(主要版本)的编译器+相同的标准库。
据我所知,如果编译器和标准库匹配,则 .a
应该可以跨多个发行版工作。这是正确的吗?或者是否有与系统调用等相关的gubbins,意思是.a
Ubuntu 应该构建在 Ubuntu 上,.a
for CentOS 应该是在 CentOS 上构建的,等等?
编辑:参见If clang++ and g++ are ABI incompatible, what is used for shared libraries in binary? (尽管它没有回答这个问题。)
编辑 2:我没有明确访问任何操作系统功能(例如通过 system
调用)。我与系统的唯一交互是打开文件并从中读取。
最佳答案
It only depends on the standard library
它也可能隐式依赖于其他事物(考虑字体、/etc/
下的配置文件、/usr/include/
下的头文件、/proc/
、/sys/
的可用性、由 system(3) 或 execvp(3) 运行的外部程序、特定文件系统或设备、特定的 ioctl
-s,可用或必需的插件等...)
这些细节可能会使移植变得困难。例如查看nsswitch.conf(5) .
问题在于细节。
(换句话说,如果没有更多更多细节,你的问题就没有多大意义)
Linux 被认为是 free software生态系统。移植某些东西的通常方法是在目标 Linux 发行版上重新编译它,或者至少为目标 Linux 发行版重新编译它。当您多次执行此操作(针对不同和许多 Linux 发行版)时,您就会了解哪些细节对于您的特定软件(和发行版)很重要。
大多数时候,在不同的发行版上重新编译和移植库非常容易。有时,这可能很难。
对于共享库,请阅读 Program Library HowTo , C++ dlopen miniHowTo , elf(5) ,你的ABI规范(请参阅 here 以获取一些不完整的列表),Drepper 的 How To Write Shared Libraries可能有用。
我的建议是准备二进制文件 packages适用于各种常见的 Linux 发行版。例如,.deb
适用于 Debian 和 Ubuntu(其中一些特定版本)。
当然,Debian 的 .deb
可能无法在 Ubuntu 上运行(有时可以)。
还请查看类似 autoconf 的内容(或cmake)。您可能至少需要一些外部提供的 #define
-d 预处理器字符串(通常由 -D
传递给 gcc
或 g++
),这些字符串会因一个发行版而异(例如,在某些发行版上,您通过 popen
-ing lp
打印,在其他发行版上,通过 popen
-ing lpr
打印,在其他通过与某些 CUPS 服务器交互等...)。细节很重要。
My only interaction with the system is to open files
但即使是这些,从一个发行版到另一个发行版也有很大差异。
您很可能无法为多个发行版提供单个 - 以及相同的lib*.a
。
注意:您可能需要比您想象的更多的工作预算。
关于linux - C++.a : what affects portability across distros?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48575902/
我一直在寻找一种在 EF Core 中编写“通用”更新方法的解决方案,该方法更新实体的所有已更改属性,包括相关集合。这样做的原因是我将实体名称的翻译存储在不同的表中。我找到了 this解决方案一开始似
我将 Identity Core 1.0 与 ASP.NET MVC Core 1.0 和 Entity Framework Core 1.0 结合使用来创建一个简单的用户注册系统 this arti
我必须创建一个悬停效果,其中当一个选项卡悬停时,该选项卡的整个背景应该是白色的。但正如下面 SS 中所见, , 悬停效果仅应用于文本部分。 我还附上了 Chrome Web 开发人员的 CSS。 生成
我正在研究一个 Prolog 问题,包括计算列表元素的数量: count([], 0). count([H|T], N) :- count(T, X), N is X+1, N
在下面的代码中,在 #content 规则中,overflow:hidden 做了一些魔术来自动调整 div 的 width。我尝试在 #content 中手动将宽度设置为某个值,例如 10000px
所以我有一些 CSS 生成这个。 HTML代码如下。 Home A
我喜欢使用 Visual Studio 中的“在 Microsoft Exel 中打开查询”按钮在 Excel 中管理父子 TFS 链接。我可以在 Excel 中创建两个工作项之间的父子关系,方法是剪
我目前正在尝试提高构建机器的性能。标准构建在每次提交 (svn) 后排队,大约需要 40 分钟。如果提交时已经有一个排队的构建,我们不会添加另一个。所以每个构建都有 1+ 次提交的更改。由于提交可能没
在列出的 php 文档中 here有迹象表明该函数使用读取、错误和写入数组值作为引用,但我无法在任何地方找到这些值中实际发生的变化。 我写了一个我现在使用的简单“服务器”,我注意到当提到的函数无法看到
嗨,我正在尝试定位第一个 .current-cat-parent 下的元素,但我的 jquery 代码正在影响所有 这下面的元素。我怎样才能只定位第一个立即元素?谢谢! $(".current-ca
我有一张表,我在 data_id 上有自动编号/序列 tabledata --------- data_id [PK] data_code [Unique] data_desc 示例代码: ins
我已经创建了 JFormattedTextField 的自定义组件 (NumberFormattedTextField)。这是我使用的格式化程序: public static Internat
据我了解,Apple 应用程序更新将安装一个新的独立应用程序,而不是对现有应用程序应用补丁。 有谁知道这个过程的更多细节吗?这适用于用户的所有目录吗?任何文件夹(如私有(private)文档)都不会受
我有一个允许我定义 alpha 背景的 sass mixin @mixin background-rgba($r,$g,$b,$a) { $color: ie_hex($r,$g,$b,$a)
我正在网络抓取如下表中的文本数据,我想获得结果: Lorem ipsum dolor sit amet consectetur adipiscing elit, sed do eiusmod temp
我正在学习事件委托(delegate),但遇到了问题。 一开始我做初稿的时候,如果点击只会删除文字,不会删除按钮,所以我修改了它。后来,当点击容器div时,它删除了整个内容,所以我再次更改它。 现在它
这个问题在这里已经有了答案: Why is this inline-block element pushed downward? (8 个答案) Align inline-block DIVs t
父元素没有溢出属性。父元素具有设置的高度。无论我尝试什么,导航栏都不会粘住。它也不适用于 JavaScript。我肯定错过了什么。下面是代码。有人请告诉我我做错了什么: /* Body */ body
问题 我的页脚中有四列,每列宽度为 25%。 对于平板电脑,宽度变为 50% - 每行两个。 但是,我无法对齐前两列和后两列。 这是一张显示它们当前外观的图片: 我试图让它们看起来像: |------
我正在尝试为网站构建菜单,我使用了以下代码: nav#menu:hover li{ background-color: #606060; } 但是,当我将鼠标悬停在网站上的列表项上时,代码会更
我是一名优秀的程序员,十分优秀!