Также знайте о влиянии, которое текущее принятое решение может иметь при парсинге шестнадцатеричного числа, восьмеричных, и двоичных чисел:
>> Integer('0x15')
# => 21
>> Integer('0b10')
# => 2
>> Integer('077')
# => 63
В числах Ruby, которые запускаются с 0x
или 0X
, шестнадцатеричное число, 0b
или 0B
являются двоичными, и всего 0
являются восьмеричными. Если это не желаемое поведение, можно хотеть объединить это с некоторыми из других решений, которые проверяют, соответствует ли строка шаблону сначала. Как эти /\d+/
регулярные выражения, и т.д.
gcc
не отвечает за загрузку библиотек, либо ld.so
делает это автоматически при загрузке вашей программы, либо вы делаете это вручную как @ jldupont предлагает.
И ld.so
может намеренно рандомизировать порядок, чтобы предотвратить атаки возврата к stdlib.
Итак, либо:
-l
в команду связывания. Вы можете проверить это, создав альтернативную программу, которая связывается только с этой разделяемой библиотекой - если она собирается и запускается, то библиотека содержит все необходимые зависимые библиотеки. Это может помочь, если ld.so загружает библиотеки в порядке зависимости - что, я думаю, должно быть. Вы можете использовать dlopen
и загружать библиотеки самостоятельно: таким образом у вас будет более точный контроль над процессом загрузки / выгрузки. См. здесь .
Конечно, это решение не на основе "gcc", и оно требует переделки вашего приложения ... Может быть, вы могли бы объяснить "проблему", с которой столкнулись, более подробно ?
Вы можете не принимать во внимание мое решение, если оно вам не подходит. Ура!