abi

    10熱度

    2回答

    我們最近因爲GCC 5.1, libstdc++ and Dual ABI發現了一個報告。它似乎是Clang is not aware of the GCC inline namespace changes,所以它根據一組名稱空間或符號生成代碼,而GCC使用另一組名稱空間或符號。在鏈接時,由於缺少符號而出現問題。 如果我正確解析了Dual ABI頁面,它看起來像是在_GLIBCXX_USE_CXX

    0熱度

    1回答

    假設我已經寫了以下內容: enum class Color { Red, Green, Blue, }; template <Color c> Color foo() { return c; } template Color foo<Color::Green>(); 並編譯它。當我看到我的編譯代碼的objdump的,我得到: [[email protected] /tmp]$ objdum

    5熱度

    1回答

    我已經下載了一個在GCC中ABI更改之前用gcc 4.8編譯的庫。 在我的筆記本電腦上(最新的kubuntu)我有GCC 5.2。當我安裝了提升,似乎它使用了新的ABI但後來我得到以下鏈接錯誤 未定義的符號.....__ cxx11 .... 我如何使用舊的ABI安裝升壓與GCC5?

    0熱度

    2回答

    正如你可能已經猜到的問題是gcc自動保存被調用保存寄存器還是應該自己做?我認爲gcc會爲我做的,但是當我gcc a.c && objdump -d a.out後寫了這個代碼 void foo(void) { __asm__ volatile ("mov $123, %rbx"); } void main(void) { foo(); } 我看到這個 00000000

    1熱度

    1回答

    我有一些問題: - Linux是一個操作系統或內核(如果兩個都如何?) - 是驅動程序是內核的一部分還是隻是站在內核和硬件 - 這是什麼一個驅動程序做完全(我已經知道,它需要系統調用,並讓他們到CPU) - 什麼是API和ABI在外行的人的話(短期和簡單) 對不起長的問題,但我真的需要提前謝謝

    1熱度

    1回答

    Qt庫說明了跨主要版本的二進制兼容性。但是,不同編譯器之間的兼容性呢? 例如,我有一個應用程序和2倍的DLL使用Qt(動態鏈接)。但其中一個是用MSVC和另一個用MinGW構建的。因此,它們與不同版本的Qt庫(相同版本)相關聯。 問題是:這些DLL可以使用一個共享的Qt DLL一起工作嗎? 如果沒有,那麼考慮到更改編譯器不是一種選擇,哪種解決方法是可能的? 我看了看Qt的DLL文件與Depende

    3熱度

    2回答

    通過opaque指針將C++庫包裝爲C是否提供了穩定的ABI接口?我清楚ABI接口以及爲什麼C++沒有穩定的接口。這與名稱混搭以及其他許多事情有關。我知道C在那部分非常穩定。與C++相比,將C庫封裝成各種其他語言也很容易。這兩個驅動力爲我的圖書館製作一個c API。 將C++庫包裝到C時,底層代碼仍然是C++。我的情況下,它是C + +提升共享PTR和其他依賴。 因此,由於底層代碼是C++,因此如

    1熱度

    1回答

    NVIDIA CUDA的PTX優化彙編,ptxas,有以下幾個選項: --abi-compile <yes|no> (-abi) Enable/Disable the compiling of functions using ABI. Default value: 'yes'. ABI那是什麼?當你禁用它會發生什麼?它似乎導致更少的寄存器使用,嗯

    3熱度

    2回答

    我承認這個問題聽起來很一般。但畢竟,從DLL中導出類是一個普遍和困難的話題,並且坦率地說,我目前困惑於一個相當普遍的層面。 簡短問題:C++和DLL中的面向對象編程如何配合在一起? 長的問題:閱讀this和this後,我有點失望和困惑,因爲我不知道如何面向對象編程可以用DLL的工作,如果DLL邊界不允許共享對象(假設兩個DLL使用了不同的編譯器或編譯器版本)。對於出口類的選項只有這些(如解釋her

    0熱度

    1回答

    我想操縱ARM上的精靈二進制文件在Linux上使用libelf庫沒有成功。即使是最小的測試用例也會破壞我的二進制文件,我不知道爲什麼。 這是我最小的測試代碼讀取ELF文件,然後簡單地寫回: #include <stdlib.h> #include <stdio.h> #include <fcntl.h> #include <unistd.h> #include <libelf.h> #i