小编Luk*_*ith的帖子

GCC创建共享对象而不是可执行二进制文件

我有一个正在建设的图书馆.当我运行以下任何一个时,我的所有对象都会连续编译和链接: ar rcs lib/libryftts.a $^

gcc -shared $^ -o lib/libryftts.so

在我的Makefile中.我也能够成功安装它们/usr/local/lib 当我用nm测试文件时,所有的功能都在那里.我的问题是,当我跑步gcc testing/test.c -lryftts -o test && file ./testgcc testing/test.c lib/libryftts.a -o test && file ./test 它说:

test: ELF 64-bit LSB shared object而不是test: ELF 64-bit LSB executable像我期望的那样.我究竟做错了什么?

c gcc shared-libraries static-libraries

22
推荐指数
2
解决办法
1万
查看次数

为什么 nasm 找不到来自 cmake 的包含语句

我有一个正在使用的模块化引导加载程序。我觉得设置它使用 gas 比将 nasm 移植到 cmake 会更痛苦。似乎不是这样。NAsm 无法找到包含文件。我错过了什么?

整个代码可以在这个 Github Repo 中找到

这是项目布局:

.
??? CMakeLists.txt
??? Failing_module
    ??? CMakeLists.txt
    ??? Print.inc
    ??? Stage1
        ??? Stage1.asm
Run Code Online (Sandbox Code Playgroud)

./CMakeLists.txt:

cmake_minimum_required(VERSION 3.6)
project(fails C ASM_NASM)
add_subdirectory(Failing_module)
Run Code Online (Sandbox Code Playgroud)

Failing_module/CMakeLists.txt:

enable_language(ASM_NASM)
set(CMAKE_ASM_NASM_OBJECT_FORMAT bin)

set(module_SRCS Stage1/Stage1.asm)

set(CMAKE_NASM_LINK_EXECUTABLE nasm)
add_executable(Stage1.bin ${module_SRCS})
set_target_properties(Stage1.bin PROPERTIES LINKER_LANGUAGE NASM)
install(TARGETS Stage1.bin DESTINATION bin)
Run Code Online (Sandbox Code Playgroud)

Failing_module/Stage1/Stage1.asm:

bits 16

jmp main

%include "Print.inc"
msgHello db "Hello World", 0x00

main:
    mov s, msgHello
    call Print
Run Code Online (Sandbox Code Playgroud)

Failing_module/Print.inc

Print:
    lodsb
    or  al, al
    jz  PrintDone
    mov …
Run Code Online (Sandbox Code Playgroud)

cmake nasm

5
推荐指数
1
解决办法
1151
查看次数

对象没有属性get

我正在使用python 3.3中的tkinter模块.我对此比较新,我正在使用输入框.出于某种原因,当我运行以下代码时,我收到一条错误消息,指出At​​tributeError:'NoneType'对象没有属性'get'.有人可以向我解释原因吗?我做了一个类似的程序,只有一个条目,工作得很好.

from tkinter import *
master =Tk()
class quad(object):
def __init__(self, ae, be, ce):
    self.ae = ae
    self.be = be
    self.ce = ce

def calculate(self):
    a = self.ae.get()
    b = self.be.get()
    c = self.ce.get()
    A = float(a)
    B = float(b)
    C = float(c)
    D = (-B)/(2*A)
    E = ((B**2 -4*A*C)**(.5))/(2*A)
    first = D + E
    second = D - E
    print(first, "\n", second)
Label(master, text='A=').grid(row=0, column=0)
Label(master, text='B=').grid(row=1, column=0)
Label(master, text='C=').grid(row=2, column=0)      
ae = Entry(master).grid(row=0, column=1)
be = Entry(master).grid(row=1, …
Run Code Online (Sandbox Code Playgroud)

python tkinter tkinter-entry

0
推荐指数
1
解决办法
5632
查看次数