华为计算微信公众号
华为计算微博
华为计算今日头条
在运行测试脚本时报错:ELF load command alignment not page-aligned,错误信息如下
pyside编译生成的相关动态库文件使用的内存页大小与系统的内存页大小不兼容。
重新编译出问题的so文件,在编译的时候传入参数-W1, -z, max-page-size=xxx
# 查看系统内存页大小 getconf PAGESIZE
在此修改对应脚本的Makefile文件,编译后覆盖原so文件
# 修改Makefile脚本 vi /path/to/pyside/.env3_build/py3.6-qt5.13.0.64bit-release/shiboken2/Makefile # 添加编译标志 PAGE_SIZE_FLAG = -W1, -z, max-page-size=xxx # 将所@$(CMAKE_COMMAND)替换为@$(CMAKE_COMMAND) $(PAGE_SIZE_FLAG) # 重新编译 make -j32 # 替换原so文件 cp shiboken2.cpython-36m-aarch64-linux-gnu.so /path/to/python/site-packages/shiboken2/
import sys import random from PySide2.QtWidgets import (QApplication, QLabel, QPushButton, QVBoxLayout, QWidget) from PySide2.QtCore import Slot, Qt class MyWidget(QWidget): def __init__(self): QWidget.__init__(self) self.hello = ["Hallo Welt", "你好,世界", "Hei maailma", "Hola Mundo", "Привет мир"] self.button = QPushButton("Click me!") self.text = QLabel("Hello World") self.text.setAlignment(Qt.AlignCenter) self.layout = QVBoxLayout() self.layout.addWidget(self.text) self.layout.addWidget(self.button) self.setLayout(self.layout) # Connecting the signal self.button.clicked.connect(self.magic) @Slot() def magic(self): self.text.setText(random.choice(self.hello)) if __name__ == "__main__": app = QApplication(sys.argv) widget = MyWidget() widget.resize(800, 600) widget.show() sys.exit(app.exec_())
问题描述
在运行测试脚本时报错:ELF load command alignment not page-aligned,错误信息如下
引发诱因
pyside编译生成的相关动态库文件使用的内存页大小与系统的内存页大小不兼容。
解决方案
重新编译出问题的so文件,在编译的时候传入参数-W1, -z, max-page-size=xxx
# 查看系统内存页大小 getconf PAGESIZE在此修改对应脚本的Makefile文件,编译后覆盖原so文件
# 修改Makefile脚本 vi /path/to/pyside/.env3_build/py3.6-qt5.13.0.64bit-release/shiboken2/Makefile # 添加编译标志 PAGE_SIZE_FLAG = -W1, -z, max-page-size=xxx # 将所@$(CMAKE_COMMAND)替换为@$(CMAKE_COMMAND) $(PAGE_SIZE_FLAG) # 重新编译 make -j32 # 替换原so文件 cp shiboken2.cpython-36m-aarch64-linux-gnu.so /path/to/python/site-packages/shiboken2/测试脚本
import sys import random from PySide2.QtWidgets import (QApplication, QLabel, QPushButton, QVBoxLayout, QWidget) from PySide2.QtCore import Slot, Qt class MyWidget(QWidget): def __init__(self): QWidget.__init__(self) self.hello = ["Hallo Welt", "你好,世界", "Hei maailma", "Hola Mundo", "Привет мир"] self.button = QPushButton("Click me!") self.text = QLabel("Hello World") self.text.setAlignment(Qt.AlignCenter) self.layout = QVBoxLayout() self.layout.addWidget(self.text) self.layout.addWidget(self.button) self.setLayout(self.layout) # Connecting the signal self.button.clicked.connect(self.magic) @Slot() def magic(self): self.text.setText(random.choice(self.hello)) if __name__ == "__main__": app = QApplication(sys.argv) widget = MyWidget() widget.resize(800, 600) widget.show() sys.exit(app.exec_())