@ProCxx

Страница 2429 из 2477
Boris
12.10.2018
16:18:17
И этот inc_file.h находится по пути my_lib/include/inc_file.h

Верно?

Boris
12.10.2018
16:20:35
Google
Igor
12.10.2018
16:22:05
Верно?
верно

// ./main.cpp: #include <a.h> int main(){return a;} // ./CMakeLists.txt: add_subdirectory(my_lib) add_executable(my_exe main.cpp) target_link_libraries(my_exe my_lib) // ./my_lib/incl/a.h: int a = 100; // ./my_lib/CMakeLists.txt: add_library(my_lib m.cpp) target_include_directories(my_lib PUBLIC incl) ¯\_(ツ)_/¯

Stanislav
12.10.2018
16:29:38
ну это так

Fuzzytoozy
12.10.2018
16:31:35
Ребят. По какой причине может происходить такая пьянка? warning: Corrupted shared library list: 0x9408e30 != 0x0 warning: Error reading shared library list entry at 0x42a0 warning: Error reading shared library list entry at 0x4590 warning: Corrupted shared library list: 0x9404810 != 0xffff9f5c warning: Error reading shared library list entry at 0xfffffe40

Boris
12.10.2018
16:31:36
для header only INTERFACE а не PUBLIC :)
Что делать, если я вынес макросы в header-only сущность? target_include_directories(my_lib PUBLIC include) target_include_directories(my_lib INTERFACE h_only_include) Так корректно? (не работает)

Igor
12.10.2018
16:33:20
для header only INTERFACE а не PUBLIC :)
Гм, разве это указывается в самой либе, а не в таргете который ей пользуется?

Stanislav
12.10.2018
16:35:28
Stanislav
12.10.2018
16:36:06
Сейчас попробую.
это для хедер онли либ

Google
Igor
12.10.2018
16:36:51
в либе add_library(mylib INTERFACE) target_include_directories(mylib INTERFACE ...)
Хм, окей, чет давно этим аспектом не пользовался, подзабыл

Boris
12.10.2018
16:39:25


Ой, ступил.

target_include_directories(my_lib INTERFACE .)

Добавил.

Хотя PUBLIC там тоже работает.



Только этот пример надо на реальный проект наложить, а там что-то я напутал...

Спасибо, @Artalus , @crackedmind , разобрался.

Fuzzytoozy
12.10.2018
16:50:01
Мне бы понять что вообще происходит

Alexander
12.10.2018
16:50:26
ну ты хоть скажи, когда проблему ловишь

Fuzzytoozy
12.10.2018
16:51:21
Бубунта это. Основной процесс загружает либу через dlopen. Сборка 32 битная

Все стартует но падает. И в дебагере спам идёт строчек которые я прислал

Alexander
12.10.2018
16:51:51
какая прога? какая либа?

Fuzzytoozy
12.10.2018
16:52:02
Моя прога моя либа

Alexander
12.10.2018
16:52:11
glhf

Google
Fuzzytoozy
12.10.2018
16:52:45
Из за чего вообще это может быть? Есть какие-нибудь известные причины?

Я ж правильно понял что тут дело не в шаред либе а в процессе который её грузит

Это у него разметка адресов поехала в elf

Или система просто не там ищет по какой то причине

Крис
12.10.2018
17:06:36
Быть может задам глупый вопрос, но. Как определить эффективное количество "одновременно" работающих потоков для каждой конкретной машины?

Крис
12.10.2018
17:13:29
std::thread::hardware_concurrency
Я не про это. Я же могу разбить задачу на 16 потоков, где некоторые будут отдыхать а некоторые работать. Интересна какое количество потоков принесут максимальную эффективность. Я же могу создать 1000 потоков, но не уверен что это эффективней 16, к примеру.

Поэтому "одновременно" в скобочках

Alex
12.10.2018
17:14:05
std::thread::hardware_concurrency
Спасибо, не знал.

Крис
12.10.2018
17:14:05
Или это слишком сильно зависит от задачи?

Alexander
12.10.2018
17:14:15
очень интересно, наверное, создать 1000 потоков и юзать из них 500 Ж)

Крис
12.10.2018
17:16:34
Мало ли, может есть какой-то алгоритм анализа задачи, который позволяет определить теоретически наиболее эффективное количество псевдо-паралельных потоков. Но судя по всему, только методом проб и ошибок, да?

Alexander
12.10.2018
17:18:15
есть наблюдение, что количество одновременно ывполняемых потоков не должно быть больше того кол-ва, что может твоя система параллельно делать. А если у тебя какие-то псевдопараллельные потоки - то зависит от задачи. Ну мб для написания ОС какие-то другие правила

Tim
12.10.2018
17:20:03
Что вы делаете?

Что за вопрос с потоками

Крис
12.10.2018
17:20:24
Google
Tim
12.10.2018
17:29:18
Здесь никто не знает, можно ли узнать точно размер функции в си коде? Например, я создал функцию void foo() { return; } Как мне понять сколько байт она будет занимать? Если брать указатель на функцию и итерировать до поиска команды RET то выдаются всегда разные значения почему-то.

Aidar
12.10.2018
17:29:32
Нельзя

Tim
12.10.2018
17:30:05
А если объектники парсить?

Aidar
12.10.2018
17:30:12
Нельзя

Крис
12.10.2018
17:30:16
Тернарный поиск?
Я ж говорю, экспериментальным путем только и остается(

Alexander
12.10.2018
17:30:36
А если объектники парсить?
и это никак не поможет

Aidar
12.10.2018
17:31:06
На уровне ассемблера нет понятия функция

Tim
12.10.2018
17:31:07
Окей, значит никак и бесповоротно нельзя?

Aidar
12.10.2018
17:31:19
Никак ваще нельзя

Max
12.10.2018
17:31:25
Мало ли, может есть какой-то алгоритм анализа задачи, который позволяет определить теоретически наиболее эффективное количество псевдо-паралельных потоков. Но судя по всему, только методом проб и ошибок, да?
конкретный алгоритм зависит от задачи, но в целом всё это относится к теории массового обслуживания. Судя по постановке вопроса, тебя интересуют какие-то приложения потока пуассона.

Tim
12.10.2018
17:31:28
На уровне ассемблера нет понятия функция
это jmp с созданием стека вызова?

Aidar
12.10.2018
17:31:46
это jmp с созданием стека вызова?
Или без или неважно как

Alexander
12.10.2018
17:32:07
это jmp с созданием стека вызова?
что скажете с инлайнеными функциями?

Tim
12.10.2018
17:32:20
Можете посоветовать где можно почитать как переменные размещаются в памяти, какие есть модификаторы доступа и т.д.

Alexey
12.10.2018
17:32:20
В рантайме нельзя, nm умеет объектник парсить

Tim
12.10.2018
17:32:32
Aidar
12.10.2018
17:32:39
Alexander
12.10.2018
17:32:55
Запретить компиляцией.
что скажете про компиляцию с разнымифлагами?

Google
Aidar
12.10.2018
17:32:56
Потомучто переменных тоже нет

Tim
12.10.2018
17:33:01
А разве нет стековой, глобальной памяти и т.п.?

Alexey
12.10.2018
17:33:04
И переменные тоже

Есть только память

Tim
12.10.2018
17:33:20
Я имею ввиду static и тому прочее

Aidar
12.10.2018
17:33:33
А разве нет стековой, глобальной памяти и т.п.?
Есть storage duration но это про си++ а не ассемблер

Alexey
12.10.2018
17:33:43
Есть только локальные и глобальные

Aidar
12.10.2018
17:33:48
Никак не мапается на ассемблер

Tim
12.10.2018
17:34:12
Есть только локальные и глобальные
Первые в стеке вызовов, вторые нет?

Alexey
12.10.2018
17:34:18
Глобальные - это не локальные

Локальные могут вообще не быть в памяти

Tim
12.10.2018
17:34:58
В регистрах что ли?

Alexey
12.10.2018
17:34:59
Ненужные глобальные - тоже

Aidar
12.10.2018
17:35:08

Страница 2429 из 2477