動態連結警告:creating a DT_TEXTREL in object
前一段時間將一個模組做成動態庫的過程中,編譯.so的時候有一個警告:creating a DT_TEXTREL in object。
但是明明makefile裡面是有加fPIC的,不知為何還會生成DT_TEXTREL。
導致裝置啟動的時候載入.so檔案的時候,彈出了“Can't modify /lib/libispfront.so's text section. Use GCC option -fPIC for shared objects, please.”
對著makefile瞅了半天,也沒發現哪裡有問題。
問題實際上出在這個.so檔案所連結的一個靜態庫上,這個靜態庫編譯的時候是沒加fPIC的,所以生成的程式碼不是地址無關的,
導致的最終結果是生成的.so中一半地址無關程式碼,一半地址相關需要重定位的。
正常來說這種.so應該也是能正常載入的,但是不知為何,可能連結器做了什麼我不瞭解的限制,只加載fPIC的.so,
或者是連結器連結的時候有什麼選項沒有選對?
但是,可悲的是這個靜態庫的原始碼隨著部門劃分划走了,所以拿不到原始碼,也就無法重新編譯。
最終想了另外一個辦法饒了過去,將這個靜態庫從.so中拎了出來,放在可執行程式中,然後就只把能編譯的程式碼編成.so。
問題暫時是繞過去了,但是這個降低耦合的目的沒有達到,起碼是事倍功半。。。
相關推薦
動態連結警告:creating a DT_TEXTREL in object
前一段時間將一個模組做成動態庫的過程中,編譯.so的時候有一個警告:creating a DT_TEXTREL in object。 但是明明makefile裡面是有加fPIC的,不知為何還會生成DT_TEXTREL。 導致裝置啟動的時候載入.so檔案的時候,彈出了“Can
題解:UVa1025 A Spy in the Metro
cit %d mat png a10 direct 發現 TP 最小 原題鏈接 pdf 題目大意 給出一張無向圖圖,求該圖的最小瓶頸生成樹。 無向圖的瓶頸生成樹:無向圖\(G\)的一顆瓶頸生成樹是這樣的一顆生成樹:它最大的邊權值在\(G\)的所有生成樹中是最小的。瓶頸生成樹
pycharm運行Pytest警告:passing a string to pytest.main() is deprecated, pass a list of arguments instead.
9.png 需要 pass nts nbsp ssi ring 分享 dep 初學pytest. 將pytest寫進Python代碼中 不同運行方式都可正常運行 =======================**********************=
解決:Specifying a namespace in include() without providing an app_name和XXX is not a registered namespace問題
info clu .py 添加 圖片 alt support 遇到 without python3 Django 環境下,如果你遇到namespace沒有註冊以及在根目錄下urls.py中的include方法的第二個參數namespace添加之後就出錯的問題。 出錯問題:
Python異常:TypeError: a bytes-like object is required, not 'str'
Python異常:TypeError: a bytes-like object is required, not ‘str’ import json str = [{"userName" : "UserPython", "age" : 20}, (2, 3), 1] with o
Python異常:TypeError: a bytes-like object is required, not 'str'
Python異常:TypeError: a bytes-like object is required, not ‘str’ import json str = [{"userName" : "Use
UVA1025-A Spy in the Metro-動態規劃
https str 結果 cstring algorithm eof possible 還需要 ++ A Spy in the Metro 題意:一人要從一號車站做車去n號車站,輸入每兩個車站間的通過時間,和兩頭火車的出發時間,求這個人最少要在車站等多久; 思路:動態規劃,
UVA1025-A Spy in the Metro(動態規劃)
read min 圖片 ret 站點 pos ssi height names Problem UVA1025-A Spy in the Metro Accept: 713 Submit: 6160Time Limit: 3000 mSec Problem Descr
玩轉資料結構——第三章:最基礎的動態資料結構:連結串列
內容概括: 3-1.什麼是連結串列 3-2.在連結串列中新增元素 3-3.使用連結串列的虛擬頭結點 3-4.連結串列的遍歷,查詢和修改 3-5.從連結串列中刪除元素 3-6.使用連結串列實現棧 3-7.帶有尾指標的連結串列:使用連結串列實現佇列
C語言函式庫:動態連結庫與靜態連結庫
首先,函式庫就是一些事先寫好的函式的集合,是別人分享的,我們可以拿來使用的。經過一些校準和整理,就形成一份標準化的函式庫。例如glibc 函式庫有兩種提供形式:動態連結庫與靜態連結庫 早起函式庫裡的函式都是直接共享的,就是所謂的開源社群。後來函式庫商業化,就出現了靜態連結庫與動態連結庫。
一步步完善rootfs:4.配置動態連結庫
配置動態連結庫 一、動態連結庫作用 編譯程式可分為動態編譯和靜態編譯,靜態編譯出來的可執行程式大小相比較於動態編譯是很大的,所以為了縮小程式所佔的資源,一般使用動態編譯,動態編譯的程式在執行時會依賴動態連結庫去執行,動態連結庫會提供API給程式呼叫。 二、查詢動態連結庫 動態
最基礎的動態資料結構:連結串列
什麼是連結串列 連結串列是一種線性結構,也是最基礎的動態資料結構。我們在實現動態陣列、棧以及佇列時,底層都是依託的靜態陣列,靠resize來解決固定容量的問題,而連結串列是真正的動態資料結構。學習連結串列這種資料結構,能夠更深入的理解引用(或者指標)以及遞迴。其中連結串列分為單鏈連結串列和雙鏈連結串列,本文
動態規劃——A Spy in the Metro UVA - 1025
題解: 這道題目基本上是線性dp,,只需要在記率每個時刻,每個車站左邊或者右邊有木有車駛來, 一共有三種狀態(等待,上左車,上右車),就可以判斷下一狀態需要等待的時間了,具體解法紫書上有說明 注意點:需要注意你儲存每一站的時間的下標是怎樣的,然後根據你的下標在你記錄車輛的時候注意下標
第一次使用jupyter建立python時錯誤:Creating Notebook Failed An error occurred while creating a new notebook.
當我們用命令列在瀏覽器中啟動jupyter notebook後需要點選右上角的New建立新的python檔案,此時會報錯。在Linux下可以用命令列解決這個問題。首先需要找到anaconda2中jupyter檔案,在anaconda2中的share檔案中,對jupyter執行如下命令,來修改jupy
解決Qt編譯動態連結庫could not find or load the Qt platform plugin "windows" in.問題
最近用Qt5做了一個專案的介面,在編譯成可執行檔案EXE之後,執行檔案,提示: This application failed to start because it could not find or load the Qt platfo rm plugin "windows" in "".
讀書筆記: C# 7.0 in a nutshell (第 五 章 Framework Overview)
內容: 第五章 框架總覽 Overview .NET Standard 2.0 CLR 和核心框架 應用技術 1. Overview 幾乎所有 .NET 框架的作用都通過一系列的 Managed Types暴露出
VS程式設計,x86,x64,Any CPU在可執行檔案(EXE)或dll(動態連結庫)的區別:
Any CPU和x86的可執行檔案(EXE)或dll(動態連結庫)在32位和64位下的區別: 1、x86平臺編譯出來的exe(可執行檔案)或dll(動態連結庫)都是32位的 2、x64平臺編譯出來的exe(可執行檔案)或dll(動態連結庫)對應的則是64位的。 3、Any
ApolloStudio高手之路(8):用Python呼叫.Net(C#、VB.Net等)開發的動態連結庫(DLL庫檔案)實現相互協作
ApolloStudio是基於.Net與Python雙架構下的實現,這樣的架構體系使得其具有傳統定製軟體無法比擬的超強拓展性,在本文中我們將介紹這兩者是如何在ApolloStudio平臺上實現優勢互補的。由於在ApolloStudio中使用的更易學習的Python作為主導指令碼語言,這裡我們將介
Linux中,.a和.so,其實就是靜態連結庫與動態連結庫
詳細查了一下,.a與.so的區別,其實就是靜態連結庫與動態連結庫。有一篇博文,很詳細,附上鍊接:http://blog.csdn.net/nieyinyin/article/details/6890557 Linux下的.so是基於Linux下的動態連結,其功能和作用類
linux 把靜態連結庫.a連結到動態連結庫.so裡
個人分類: linux編譯連結 最近公司的專案中突然出現了這樣一個需求,我簡化再概括後如下:有兩大模組,其中一個模組a最終編譯出一個可執行檔案exec_a,另一個模組b編譯出一個動態連結庫lib_b.so被模組a的程式exec_a所連結。現在模組b中分出