当前位置:首页 » 编程软件 » 不编译源码的情况下

不编译源码的情况下

发布时间: 2022-09-09 23:50:40

1. 有没有已经编译好的android系统源码就是直接可以看的,在linux下下载了还要编译一下才可以看吗

源码不需要编译就可以看的,只是如果不在已编译的源码环境下编译自己的工程,就不能成功。意思是说,如果你要在源码环境下开发自己的功能,也就是要对源码进行修改或添加自己个性化的东西,就需要先编译源码。如果单纯只是想看源码,不编译也是可以的。

2. 源代码未编译什么情况

摘要 因为我们现在写的代码都是机器不能识别的语言,所以需要编译器编译后变成机器可以识别的语言才能运行。

3. 你好,软件的源代码可以看到吗比如说gcc编译器,我想改进它必须要知道她的源代码吗,然后修改是吗

编译之后的软件,是不能看到源码的。
有反编译类的软件,但效果很一般,达不到反编译源码再修改后编译的程度。
修改gcc编译器之类的软件,是个很复杂的工作,在没有源码的情况下修改,几乎不可完成。
另外有些软件,支持二次开发接口的,可以做允许范围之内的调整,但核心部分没有哪个软件可以。

4. 怎样在不改动源代码的情况下在makefile中将头文件include进去

不难
首先你在makefile里面找到你编译这个m.c
的编译命令,
假如是
gcc
m.c
-o
m,
你只需要在gcc命令后面加上要引入的
头文件
,如下:
gcc
m.c
-o
m
-include
c.h
c.h和m.c在同一目录下。
明白了没,gcc
的include这个选项是在编译时手动引入头文件。

5. 源代码未编译什么情况

这些语言在写完后缀名是.c,这个时候要先编译成.h,才能运行。
所以你保存后要先点编译,然后才能点运行。
编译键一般在运行键旁边啦,你点击了再看行不行,有时如果你的文件有错误,编译的时候会报错出现error和警告,只有程序是正确的,你才能编译通过,再运行
七爪

6. 怎么在没有源代码的情况下修改一个软件用的MFC。反编译还是有别的办法

不用反编译,用钩子函数就可以。windows系统打补丁就是用这种技术。大概是设计一个新的dll库文件挂在原来的程序上,实现一些功能的替换

7. 如何编译别人的易语言程序。在没有源码的情况下

你所要做的应该叫反编译!程序换个名字之类的不用反编译的,用eXeScope、ResHacker等软件就能做到。但如果加壳了就不太容易了。

8. 如何在不影响原有aapt源码的情况下编译定制版aapt

正常情况下,编译aapt时我们使用的命令是
make aapt11

改造后,我们希望该命令可以编译出官方的aapt,然后通过另一个命令编译出定制版的aapt,这里让其命名为vaapt,当然这个前缀随意,你喜欢就好。最终编译的命令就是
make vaapt11

命令有了,模块在哪里呢?很简单,直接在aapt同级目录下拷贝一个aapt,重名名为vaapt。最终目录结构如图所示

我们还需要修改makefile文件,让其编译出vaapt,依赖的内容也是vaapt,makefile原内容为:
# ==========================================================
# Build the host static library: libaapt
# ==========================================================
include $(CLEAR_VARS)

LOCAL_MODULE := libaapt
LOCAL_MODULE_HOST_OS := darwin linux windows
LOCAL_CFLAGS := -Wno-format-y2k -DSTATIC_ANDROIDFW_FOR_TOOLS $(aaptCFlags)
LOCAL_CPPFLAGS := $(aaptCppFlags)
LOCAL_CFLAGS_darwin := -D_DARWIN_UNLIMITED_STREAMS
LOCAL_SRC_FILES := $(aaptSources)
LOCAL_STATIC_LIBRARIES := $(aaptHostStaticLibs)
LOCAL_STATIC_LIBRARIES_windows := $(aaptHostStaticLibs_windows)

include $(BUILD_HOST_STATIC_LIBRARY)

# ==========================================================
# Build the host executable: aapt
# ==========================================================
include $(CLEAR_VARS)

LOCAL_MODULE := aapt
LOCAL_MODULE_HOST_OS := darwin linux windows
LOCAL_CFLAGS := $(aaptCFlags)
LOCAL_CPPFLAGS := $(aaptCppFlags)
LOCAL_LDLIBS_darwin := $(aaptHostLdLibs_darwin)
LOCAL_LDLIBS_linux := $(aaptHostLdLibs_linux)
LOCAL_SRC_FILES := $(aaptMain)
LOCAL_STATIC_LIBRARIES := libaapt $(aaptHostStaticLibs)
LOCAL_STATIC_LIBRARIES_windows := $(aaptHostStaticLibs_windows)

include $(BUILD_HOST_EXECUTABLE)

# ==========================================================
# Build the host tests: libaapt_tests
# ==========================================================
include $(CLEAR_VARS)

LOCAL_MODULE := libaapt_tests
LOCAL_CFLAGS := $(aaptCFlags)
LOCAL_CPPFLAGS := $(aaptCppFlags)
LOCAL_LDLIBS_darwin := $(aaptHostLdLibs_darwin)
LOCAL_LDLIBS_linux := $(aaptHostLdLibs_linux)
LOCAL_SRC_FILES := $(aaptTests)
LOCAL_C_INCLUDES := $(LOCAL_PATH)
LOCAL_STATIC_LIBRARIES := libaapt $(aaptHostStaticLibs)
LOCAL_STATIC_LIBRARIES_windows := $(aaptHostStaticLibs_windows)

include $(BUILD_HOST_NATIVE_TEST)

可以看到LOCAL_MODULE的值都是aapt相关的,比如static library对应的值是libaapt,host
executable对应的值是aapt,host
tests对应的值是libaapt_tests,还有LOCAL_STATIC_LIBRARIES的值也是依赖static
library,其值为libaapt,我们需要将这几个值修改为vaapt相关的,即在原来的值aapt前面加个v,对应修改为libvaapt、vaapt、libvaapt_tests、libvaapt。修改后的内容如下:

# ==========================================================
# Build the host static library: libaapt
# ==========================================================
include $(CLEAR_VARS)

LOCAL_MODULE := libvaapt
LOCAL_MODULE_HOST_OS := darwin linux windows
LOCAL_CFLAGS := -Wno-format-y2k -DSTATIC_ANDROIDFW_FOR_TOOLS $(aaptCFlags)
LOCAL_CPPFLAGS := $(aaptCppFlags)
LOCAL_CFLAGS_darwin := -D_DARWIN_UNLIMITED_STREAMS
LOCAL_SRC_FILES := $(aaptSources)
LOCAL_STATIC_LIBRARIES := $(aaptHostStaticLibs)
LOCAL_STATIC_LIBRARIES_windows := $(aaptHostStaticLibs_windows)

include $(BUILD_HOST_STATIC_LIBRARY)

# ==========================================================
# Build the host executable: aapt
# ==========================================================
include $(CLEAR_VARS)

LOCAL_MODULE := vaapt
LOCAL_MODULE_HOST_OS := darwin linux windows
LOCAL_CFLAGS := $(aaptCFlags)
LOCAL_CPPFLAGS := $(aaptCppFlags)
LOCAL_LDLIBS_darwin := $(aaptHostLdLibs_darwin)
LOCAL_LDLIBS_linux := $(aaptHostLdLibs_linux)
LOCAL_SRC_FILES := $(aaptMain)
LOCAL_STATIC_LIBRARIES := libvaapt $(aaptHostStaticLibs)
LOCAL_STATIC_LIBRARIES_windows := $(aaptHostStaticLibs_windows)

include $(BUILD_HOST_EXECUTABLE)

# ==========================================================
# Build the host tests: libaapt_tests
# ==========================================================
include $(CLEAR_VARS)

LOCAL_MODULE := libvaapt_tests
LOCAL_CFLAGS := $(aaptCFlags)
LOCAL_CPPFLAGS := $(aaptCppFlags)
LOCAL_LDLIBS_darwin := $(aaptHostLdLibs_darwin)
LOCAL_LDLIBS_linux := $(aaptHostLdLibs_linux)
LOCAL_SRC_FILES := $(aaptTests)
LOCAL_C_INCLUDES := $(LOCAL_PATH)
LOCAL_STATIC_LIBRARIES := libvaapt $(aaptHostStaticLibs)
LOCAL_STATIC_LIBRARIES_windows := $(aaptHostStaticLibs_windows)

include $(BUILD_HOST_NATIVE_TEST)

这时候执行编译命令make
vaapt,完全可以编译出一个vaapt命名的可执行文件。但是事情还没有完,aapt的源码依赖了androidfw下的部分源码,而恰恰这部分源码也可能需要修改,因此我们也需要做同样的事,在同目录下复制一份androidfw为vandroidfw。这个文件夹有两份,一份是头文件,一份是cpp文件,对应在不同的目录。首先来看头文件的目录,在include下

然后是实现的cpp的目录,在libs下

同样的需要修改makefile文件,原文件内容是
# For the host
# =====================================================
include $(CLEAR_VARS)

LOCAL_MODULE:= libandroidfw
LOCAL_MODULE_HOST_OS := darwin linux windows
LOCAL_CFLAGS += -DSTATIC_ANDROIDFW_FOR_TOOLS
LOCAL_CFLAGS += -Wall -Werror -Wunused -Wunreachable-code
LOCAL_SRC_FILES:= $(hostSources)
LOCAL_C_INCLUDES := external/zlib

include $(BUILD_HOST_STATIC_LIBRARY)

# For the device
# =====================================================

include $(CLEAR_VARS)

LOCAL_MODULE:= libandroidfw
LOCAL_SRC_FILES:= $(deviceSources)
LOCAL_C_INCLUDES := \
system/core/include
LOCAL_STATIC_LIBRARIES := libziparchive libbase
LOCAL_SHARED_LIBRARIES := \
libbinder \
liblog \
libcutils \
libgui \
libutils \
libz

需要将LOCAL_MODULE的值从libandroidfw修改为libvandroidfw。

这时候其实还是有问题的,因为文件里的头文件的引用还是androidfw的,会报找不到的错误,因此需要将include/vandroidfw和libs/vandroidfw下的文件内容中头文件的include部分的代码和androidfw相关的都改成vandroidfw。就像这样

这是一个相对痛苦且繁琐的步骤,只要耐住性子改了就可以了,不要遗漏即可。

然后回到vaapt的makefile文件。将对androidfw的引用改成vandroidfw,原内容为
aaptHostStaticLibs := \
libandroidfw \
libpng \
liblog \
libutils \
libcutils \
libexpat \
libziparchive-host \
libbase

修改后的内容为
aaptHostStaticLibs := \
libvandroidfw \
libpng \
liblog \
libutils \
libcutils \
libexpat \
libziparchive-host \
libbase

至此,就完成了一个自定义的aapt的模块的新建和修改,之后只需要修改vaapt下的源码以及vandroidfw下的源码,即可得到自定义的aapt,而不改变原有aapt的源码内容。如果需要编译官方的aapt,只需要用make aapt编译,编译我们自定义的aapt,则使用make vaapt编译,做到了一定的隔离,互不影响。当然如果你乐意,完全可以对vaapt和vandroidfw目录使用git进行版本控制,这样也就能看到我们历史修改了什么内容。

最后推荐一个可以用于差异比较的软件Beyond Compare,跨平台的,windows,mac,linux都有,当然这是一个收费软件。。。所以你懂的。可以用它比较两个目录的aapt之间的差异,效果如下。

9. 源代码未编译,是否立刻编译这个是出了什么问题

试一下在int main()的括号里添个 void 了,或者同时有另一个程序在运行

热点内容
linux查看用户与组 发布:2025-04-01 07:08:27 浏览:421
安卓大屏导航怎么改回中文 发布:2025-04-01 07:07:05 浏览:499
单机奥德赛需要什么配置 发布:2025-04-01 07:05:33 浏览:903
专属云服务器如何注册 发布:2025-04-01 07:03:23 浏览:763
java编程的培训机构 发布:2025-04-01 06:57:40 浏览:780
sqlserver百度云 发布:2025-04-01 06:57:35 浏览:615
11点关闭游戏服务器有什么影响 发布:2025-04-01 06:51:54 浏览:559
转发赚钱源码 发布:2025-04-01 06:50:28 浏览:906
php对象编程 发布:2025-04-01 06:38:41 浏览:333
c语言了5 发布:2025-04-01 06:36:19 浏览:143