floating point exception || LD_LIBRARY_PATH

当程序在高版本GCC编译后在低版本Linux上运行出现Floating Point Exception,可能由于GCC的新哈希技术不被低版本支持。解决方法是在链接时添加-Wl,--hash-style=sysv选项。另外,当动态链接库路径问题导致错误,可以通过设置LD_LIBRARY_PATH环境变量来解决,确保程序能找到所需库。在终端中临时设置或永久添加到~/.bashrc文件中使设置生效。" 86579521,5552873,MapUtils详解:常用方法与实战应用,"['Java', 'Map操作', '工具类', '数据转换', '数组处理']


Floating point exception 问题解决 GCC版本问题引发的floating point exception

现象:

同一个程序在一台高版本Linux上运行时没有问题,而在另一台低版本机器上运行报Floating Point Exception时,那这极有可能是由高版本gcc链接造成的

原因:

高版本的gcc在链接时采用了新的哈希技术来提高动态链接的速度,这在低版本中是不支持的。因此会发生这个错误。

解决方案:

在链接的时候添加选项-Wl,--hash-style=sysv

例如 gcc -Wl,--hash-type=sysv -o test test.c


-----------------------------------------------------------
[问题] RedHat AS5 编译的可执行程序拷贝到 RedHat AS4 上运行, 直接报Floating point exception.
[原因] glibc 不兼容导致. 详细原因如下引用.

[引用 来自 http://docs.fedoraproject.org/ ]
Fedora 开发者对 ELF 格式中,提供动态链接的符号的 .hash 段做了变动。新的 .gnu.hash 段,使用 gcc 的 --hash-style=gnu 参数来生成,提供与过去的 hash 段相同的功能,但是带来了 50% 的动态链接性能提升。使用新的 hash 函数生成的可执行程序和库与旧的 glibc 以及动态链接器不兼容。要使用过去的 hash 规则,与过去基于 glibc 的版本兼容,可以传递 --hash-style=sysv 选项。


*****************************************************************************************************************************************************

LD_LIBRARY_PATH

在 Linux 下,如果你写好了自己的动态链接库,需要在其它程序里调用,则需要让这些程序能找到这些动态链接库。如果设置不对,会出现类似如下的错误:

test: error while loading shared libraries: libexampleso.so.0: cannot open shared object file: No such file or directory

这是因为没有把动态链接库的安装路径(例如说是 /usr/local/lib )放到变量 LD_LIBRARY_PATH 里。

这时,可以用命令 export 来临时测试确认是不是这个问题:

export LD_LIBRARY_PATH=/usr/local/lib

在终端里运行上面这行命令,再运行这个可执行文件,如果运行正常就说明是这个问题。

接下来的问题是:以上做法,只是临时设置变量 LD_LIBRARY_PATH ,下次开机,一切设置将不复存在;如何把这个值持续写到 LD_LIBRARY_PATH 里呢?

我们可以在 ~/.bashrc 或者 ~/.bash_profile 中加入 export 语句,前者在每次登陆和每次打开 shell 都读取一次,后者只在登陆时读取一次。我的习惯是加到 ~/.bashrc 中,在该文件的未尾,可采用如下语句来使设置生效:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

修改完后,记得关掉当前终端并重新打开一个新的终端,从而使上面的配置生效。



[root@controller ~(tian)]# openstack port create --network b91dce3b-5578-4dc2-9aad-fab2dff73ca3 --fixed-ip subnet=5e911f20-7540-4bf6-ade3-3fd48965b719 ecs666-public-port +-------------------------+--------------------------------------------------------------------------------+ | Field | Value | +-------------------------+--------------------------------------------------------------------------------+ | admin_state_up | UP | | allowed_address_pairs | | | binding_host_id | None | | binding_profile | None | | binding_vif_details | None | | binding_vif_type | None | | binding_vnic_type | normal | | created_at | 2025-07-05T10:14:28Z | | data_plane_status | None | | description | | | device_id | | | device_owner | | | dns_assignment | None | | dns_domain | None | | dns_name | None | | extra_dhcp_opts | | | fixed_ips | ip_address='192.168.100.204', subnet_id='5e911f20-7540-4bf6-ade3-3fd48965b719' | | id | d5ba2c8b-b65e-43a7-9c39-bbc54f90a247 | | ip_allocation | None | | mac_address | fa:16:3e:00:29:c9 | | name | ecs666-public-port | | network_id | b91dce3b-5578-4dc2-9aad-fab2dff73ca3 | | numa_affinity_policy | None | | port_security_enabled | True | | project_id | 9fb013ffad09464bab4df4f83ca81318 | | propagate_uplink_status | None | | qos_network_policy_id | None | | qos_policy_id | None | | resource_request | None | | revision_number | 1 | | security_group_ids | 70ca01b0-f6ed-4ce9-975c-d2f7064e8941 | | status | DOWN | | tags | | | trunk_details | None | | updated_at | 2025-07-05T10:14:29Z | +-------------------------+--------------
最新发布
07-06
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值