我有一个dlopen()
用于加载其他模块的应用程序。该应用程序和模块使用gcc 4.6在Ubuntu 12.04 x86_64上构建,但适用于i386
arch。然后将二进制文件复制到具有完全相同操作系统的另一台计算机上,并且可以正常工作。
但是,如果将它们复制到Ubuntu 12.04 i386,则某些(但不是全部)模块无法加载,并显示以下消息:
dlopen: cannot load any more object with static TLS
我怀疑这是由__thread
变量的使用引起的。但是,此类变量不会在加载的模块中使用-只会在加载器模块本身中使用。
有人可以提供任何其他信息吗,这是什么原因?
我正在减少__thread
变量的数量并优化它们(使用-ftls-model
etc),我很好奇为什么它不能在 几乎 相同的系统上工作。
我怀疑这是由于使用__thread变量引起的。
正确。
但是,此类变量不会在加载的模块中使用-只会在加载器模块本身中使用。
不正确 您可能没有使用__thread
自己,但是您静态链接到模块中的某些库 正在 使用它们。您可以通过以下方式进行确认:
readelf -l /path/to/foo.so | grep TLS
可能是什么原因?
该模块正在使用-ftls-model=initial-exec
,但应该正在使用-ftls-model=global- dynamic
。这种情况最常发生在链接到的(某些)代码foo.so
没有构建时-fPIC
。
将非-fPIC
代码链接到共享库在上是不可能的x86_64
,但在上是允许的ix86
(这会导致许多细微的问题,例如此问题)。
更新:
我有1个模块在没有-fPIC的情况下编译,但是据我所知,默认值不是initial-exec,所以我根本没有设置tls-model
initial-exec
为非-fPIC
代码。因此,如果您链接甚至一个非-fPIC
对象使用__thread
到foo.so
,然后foo.so
得到initial-exec
了 所有
的TLS的。
那么,为什么会引起问题-因为如果使用initial-exec,则tls变量的数量是有限的(因为它们不是动态分配的)?
正确。
我试图使用相对路径在jsp文件中加载静态资源,如css文件和javascript文件,但servlet映射似乎覆盖了对它们的映射。 项目结构: web.xml: mvc调度程序servlet。xml: 我尝试加载样式表的JSP文件: 我得到的错误是: 警告组织。springframework。网状物servlet。PageNotFound:1108-在名为“mvc dispatcher”的Disp
问题内容: 我正在本地计算机(Mac OS X)上运行Django的开发服务器(),无法加载CSS文件。 以下是settings.py中的相关条目: 在我的views.py中,我请求上下文: 在我的模板中,渲染正确: 变成: 文件实际所在的位置。我还确保所有文件都已收集。 我的urls.py中也包含以下几行: 我是Django的新手,所以可能缺少一些简单的知识-希望对您有所帮助。 问题答案: 请仔
问题内容: 我正在本地计算机(Mac OS X)上运行Django的开发服务器(),无法加载CSS文件。 以下是settings.py中的相关条目: 在我的views.py中,我正在请求上下文: 在我的模板中,渲染正确: 变成: 文件实际所在的位置。我还确保所有文件都已收集。 我的urls.py中也包含以下几行: 我是Django的新手,所以可能缺少一些简单的知识-希望对您有所帮助。 问题答案:
我的问题很简单。我无法在Spring中加载静态资源,下面是我的配置文件。 dispatcher servlet。xml 网状物xml 我已将js和css文件放入/webapp/resources/css和/webapp/resources/js中。 我知道这个问题已经被解决了很多次,但我无法加载静态资源。我得到405浏览器上没有方法错误。 在网上尝试了所有其他解决方案。请告诉我哪里出了问题。对这些
问题内容: 我想保留一个JSON文档来存储一些简单的数据,并且我需要此文档并在调用中使用JSON对象,以便可以使用它。这不是电话。我的意思是应该用于开发,但我确实希望在构建时编译文件,这与API 的实际调用不同,API的内容是动态的。 问题答案: 最简单的方法是为此使用requirejs json插件,这将使您也可以将文件包括在构建中。 https://github.com/millermedei
问题内容: 我正在构建Java Web应用程序,并且我讨厌传统的“代码-编译-部署-测试”周期。我想输入一个微小的更改,然后立即查看结果,而无需编译和部署。 幸运的是,码头很适合这样做。这是一个纯Java Web服务器。它带有一个非常不错的maven插件,可让您直接从构建树中启动Jetty阅读- 无需打包war文件或部署。它甚至具有scanInterval设置:将其设置为非零值,它将监视您的Jav