我正在使用 SPARC RTEMS C 编译器编译 C 程序。
使用 Xlinker -M 选项,我可以获得包含很多我不认识的东西的大内存映射。
我也尝试过使用 RCC nm 实用程序,它返回一个更易读的符号表。我假设此实用程序为 printf 给出的位置是 printf 在内存中的位置,并且每个调用 printf 的程序都将在执行期间到达该位置。这是一个有效的假设吗?
有没有办法获得所有库/系统功能的位置列表?另外,当链接完成时,它是只链接可执行文件调用的函数,还是链接库中的所有函数?考虑到我在符号表和内存映射中找到的东西的数量,在我看来似乎是后者。我可以让它只链接所需的功能吗?
谢谢你的帮助。
我有一个one_for_one主管,处理类似和完全独立的孩子.
当一个孩子出现问题时,反复崩溃并触发:
=SUPERVISOR REPORT==== 30-Mar-2011::13:10:42 ===
Supervisor: {local,gateway_sup}
Context: shutdown
Reason: reached_max_restart_intensity
Offender: [{pid,<0.76.0>}, ...
Run Code Online (Sandbox Code Playgroud)
关闭自己,并终止所有无辜的孩子,否则将继续运行良好.
如何用标准的Erlang监督员建立一个监督树,只停止重新启动一个违规的孩子并让其他人独自离开?
我正在考虑只有一个孩子的额外主管,但这对我来说似乎是重量级的.
还有其他办法吗?
我正在尝试用更优雅的函数替换以下函数:
split_packet(_, <<>>) ->
[];
split_packet(Size, P) when byte_size(P) < Size ->
[ P ];
split_packet(Size, P) ->
{Chunk, Rest} = split_binary(P, Size),
[ Chunk | split_packet(Size, Rest) ].
Run Code Online (Sandbox Code Playgroud)
(我现在这不是尾递归——想要保持简单,此外在新的 Erlang 版本中性能并不重要)
输出示例:
1> split_packet(3, <<1,2,3,4,5,6,7,8>>).
[<<1,2,3>>,<<4,5,6>>,<<7,8>>]
Run Code Online (Sandbox Code Playgroud)
具有列表推导式的优雅解决方案将是更好的选择,因为其结果将使用列表推导式进一步处理,然后可以将其包装在一个推导式中。
我试过
[ X || <<X:Size/binary>> <= P ].
Run Code Online (Sandbox Code Playgroud)
但如果 Size 不是以下的倍数,则会忽略最后一个块byte_site(P):
2> [ X || <<X:3/binary>> <= <<1,2,3,4,5,6,7,8>> ].
[<<1,2,3>>,<<4,5,6>>]
Run Code Online (Sandbox Code Playgroud) 我在mnesia中有一个查询,它返回一个像这样的元组列表:
[{"str", 10}, {"str2", 20}]
Run Code Online (Sandbox Code Playgroud)
我想将它转换为json使用,jiffy但它似乎jiffy:encode/1无法做到.反正有没有解决我的问题?!
免责声明:当谈到按位操作时,我非常天真,所以我很感激.
我基本上试图在Elixir中执行左旋转,基于我正在使用的一些等效的Java(我需要移植一小块).
public static long rotateLeft(long l, int shift) {
return (l << shift) | l >>> (64 - shift);
}
Run Code Online (Sandbox Code Playgroud)
通常情况下,我不会那么直率地讨论我正在做什么,但我认为由于使用了<<运算符(Elixir/Erlang中似乎不存在),因此它是相关的.
是否有一些明显的方法可以在Elixir中复制我失踪的上述行为?我已经搜索了没有运算符的实现,但似乎大多数其他语言都有它,因此它没有出现在任何地方.确实出现了一件事X << Y == X * 2 * Y,所以我实现了这样:
def rotate_left(l, shift) when is_number(l) and is_number(shift) do
(l * 2 * shift) ||| l >>> (64 - shift)
end
Run Code Online (Sandbox Code Playgroud)
但是,通过两种语言运行测试(rotate_left(2461839666708829781, 13))会在每种语言中提供不同的结果 - 所以我想我犯了一个错误.
如果有人可以伸手/解释我在这里缺少的东西(我认为这个运算符不存在的原因),我们将不胜感激.我试图覆盖所有内容,以防由于特定的数字等,但如果我错过了任何重要的事情,请告诉我.
也; 如果Elixir不可能,我很高兴能够下到Erlang.提前致谢!
我试图在尝试优化函数之前尝试执行函数.(代码是Elixir,但我正在使用Erlang :timer.tc.)
我的一般方法是"多次运行,然后计算平均持续时间." 但是,当我运行它时,平均值会急剧下降(达到一定程度).
一个例子:
some_func = fn ->
# not my actual function; it's a pure function,
# but exhibits the same speedup
:rand.uniform()
end
run_n_times = fn (count, func) ->
Enum.each(1..count, fn (_i) ->
func.()
end)
end
n = 20
{microseconds, :ok} = :timer.tc(run_n_times, [n, some_func])
IO.puts "#{microseconds / n} microseconds per call (#{microseconds} total for #{n} calls)"
Run Code Online (Sandbox Code Playgroud)
增加值的输出n是这样的(轻度格式化):
174.8 microseconds per call (3496 total for 20 calls )
21.505 microseconds per call …Run Code Online (Sandbox Code Playgroud) 库依赖项(仅提供函数)被列为应用程序的目的是什么?
例如,left_pad项目建议在仅提供简单功能时将其作为应用程序包含在内.
def application do
[applications: [:left_pad]]
end
Run Code Online (Sandbox Code Playgroud)
Elixir软件包是否应始终作为应用程序提供?新的库开发人员如何使其依赖项可用作应用程序?这提供了哪些其他功能?
我想使用“ mix”命令构建一个应用程序。
混合新的appname --module MODULE
但是在IEX解释器上无法识别
我在线阅读了运行我想要的方法的另一种方法是将其作为脚本参数传递:
$ bin / elixir bin / mix new appname --module MODULE
但这也不起作用
mix compile
==> gettext
could not compile dependency :gettext, "mix compile" failed. You can recompile this dependency with "mix deps.compile gettext", update it with "mix dep
s.update gettext" or clean it with "mix deps.clean gettext"
==> oblako
** (Mix) Could not compile "src/gettext_po_parser.yrl" because the application "parsetools" could not be found. This may happen if your package manager
broke Erlang into multiple packages and may be fixed by installing the missing "parsetools" package for Erlang.
Run Code Online (Sandbox Code Playgroud) 我有一个使用混合的Elixir项目.我已经使用了一些内置的erlang模块,但现在我需要使用我在Github上找到的第三方模块.
如何从Elixir导入,构建和调用第三方Erlang模块?
编辑:我现在感兴趣的模块位于https://github.com/aggelgian/erlang-algorithms,特别是edmonds_karp模块.
elixir ×6
erlang ×3
erlang-otp ×2
benchmarking ×1
bitstring ×1
c ×1
elixir-mix ×1
iex ×1
jiffy ×1
json ×1
linker ×1
rtems ×1
sparc ×1